Skip to main content

Static file digest cache busting for FastAPI/Starlette

Project description

FastAPI Static Digest

A Starlette/FastAPI plugin to digest and compress static files, and integrate with Jinja templates.

pip install fastapi-static-digest

Overview

There are two classes: StaticDigest and StaticDigestCompiler.

The StaticDigestCompiler.compiler method will produce the digested directory. The StaticDigest (and starlette.staticfiles.StaticFiles) should be configured to read this directory.

The compilation can be added to your build process, for instance with a click CLI command (see below). Alternatively, the FASTAPI_STATICDIGEST_RELOAD=1 environment variable can be set to enable "hot reloading" during development.

Usage

# app.py

app_root = Path(__file__).parent
static_src =  app_root / "static"
static = StaticDigest(source_dir=static_src)

routes = [
    Mount('/static', app=StaticFiles(directory=static.directory), name="static"),
]

app = Starlette(routes=routes)
# manage.py

from .app import app_root


@click.command()
def compile():
    src = app_root / "static"
    click.echo("Source dir %s" % src)
    compiler = StaticDigestCompiler(source_directory=src)
    compiler.compile()
    click.echo("Done.")

Jinja2 Integration

# app.py

app_root = Path(__file__).parent
static_src =  app_root / "static"
static = StaticDigest(source_dir=static_src)
templates = Jinja2Templates(app_root / "templates")
static.register_static_url_for(templates)

routes = [
    Mount('/static', app=StaticFiles(directory=static.directory), name="static"),
]

app = Starlette(routes=routes)
<!-- index.html -->
{{ static_url_for("static", "app.css" )}}

renders to

https://myhost.com/static/app.92fede82119d2e012f890e1102080a45.css

Development

PRs and issues are welcome!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi-static-digest-1.1.0.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

fastapi_static_digest-1.1.0-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file fastapi-static-digest-1.1.0.tar.gz.

File metadata

  • Download URL: fastapi-static-digest-1.1.0.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.6.15

File hashes

Hashes for fastapi-static-digest-1.1.0.tar.gz
Algorithm Hash digest
SHA256 35ed3fc8fa8e584dd64bdff48bc8044d8bf217d254f240ff813fd5e3636bafb7
MD5 47fa449e47d6b5bbc221b5bb4fc3de3d
BLAKE2b-256 5ff16a9ef65b30a0f83aa1d144c704116f9e9ea045aeef02d40249199ff67924

See more details on using hashes here.

File details

Details for the file fastapi_static_digest-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: fastapi_static_digest-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.6.15

File hashes

Hashes for fastapi_static_digest-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e914148bfca39b5bad8d784ffd50037a2b7be577d5630dbb378ff59ab5ec3c2c
MD5 59faa1c0e238d9904211ffd065db2c02
BLAKE2b-256 b6940a64fcc042af4428c8fdc29cb3ef943e3ff893d856c0cf2939fa99d90e81

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page