受whitenoise启发的静态文件服务ASGI应用程序
项目描述
blacknoise
blacknoise是一个受ASGI启发的静态文件服务应用程序,灵感来源于whitenoise,并遵循低维护软件的原则。
使用blacknoise服务静态文件
将blacknoise安装到您的Python环境中
pip install blacknoise
使用BlackNoise
应用程序包装您的ASGI应用程序
from blacknoise import BlackNoise
from django.core.asgi import get_asgi_application
from pathlib import Path
BASE_DIR = Path(__file__).parent
application = BlackNoise(get_asgi_application())
application.add(BASE_DIR / "static", "/static")
示例使用Django,但您可以包装任何ASGI应用程序。
BlackNoise
将自动处理添加的前缀下的所有路径,如果文件不存在则返回404错误。文件在服务器启动时添加,这也意味着BlackNoise
只知道在那个特定时间点存在的文件。
BlackNoise
不会监视添加的文件夹中的更改;如果您添加新文件,则需要重新启动服务器,否则那些文件不会被服务。但它不会缓存文件内容,因此可以直接获取文件更改。
提高性能
BlackNoise
的性能不如使用优化过的web服务器,如nginx等。如果应用程序位于缓存反向代理或内容分发网络后面,有时这并不重要。为了进一步支持这种情况,BlackNoise
可以配置为使用超远期过期头服务媒体文件,并支持服务压缩资源。
服务预压缩资源
可以通过运行
python -m blacknoise.compress static/
BlackNoise
将尝试使用 gzip 或 brotli(如果提供了 Brotli 库)压缩非二进制文件,并在压缩实际上(显著)减小文件大小且客户端也支持的情况下提供压缩版本。文件将并行压缩以提高完成速度。
设置远期过期头部
可以通过将 immutable_file_test
可调用对象传递给 BlackNoise
构造函数来启用远期过期头部。
def immutable_file_test(path):
return True # Enable far-future expiry headers for all files
application = BlackNoise(
get_asgi_application(),
immutable_file_test=immutable_file_test,
)
也许您想添加一些其他逻辑,例如检查路径是否包含基于静态文件内容的哈希。这些哈希可以通过 Django 的 ManifestStaticFilesStorage
或通过适当配置如 webpack
等打包器来添加。
许可证
blacknoise
根据 MIT 许可证分发。
项目详情
下载文件
下载适用于您平台的自定义文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
构建分布
blacknoise-1.1.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 20b96a452fe04d40bd69c3d939fb5e751ef56a835975d23fd4354af6e7a0c534 |
|
MD5 | 6aba77009d97a7267c9ea6e2a22b47df |
|
BLAKE2b-256 | 7dc7f60d6dc2c3f88ee6768c047f33204a985a1a17212fbd8b1c6aba7c2e3681 |
blacknoise-1.1.0-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 789e7cb4c0354164738d001fee37622dd8d10df829b33a47ca2645dcfa76e9b0 |
|
MD5 | 3b92b04956e4e970a6832ed04c175c0b |
|
BLAKE2b-256 | 25c24a4f2e5c10dfffef0de72784dc7faeac7b499b58160d684df7f981b73096 |