python-3.x - 如何禁用Starlette静态文件缓存?

标签 python-3.x starlette

我在 Python 应用程序中使用 Starlette 框架,并根据文档的要求配置了静态文件:

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

问题在于 Starlette 正在对这些静态文件执行自动缓存,并且文档中没有有关如何禁用缓存的信息。

我尝试了 asgi-caches,但我很快发现它配置了缓存,但现在似乎无法禁用缓存。

文档中唯一提到禁用缓存的内容是告诉您这是一个“TODO”,并且是一个处理 View 但不处理静态文件的装饰器。

有谁知道如何配置框架以保证 Starlette 不缓存我的静态文件?

最佳答案

似乎没有官方配置可以做到这一点。

但是你可以通过覆盖starlette.staticfiles.StaticFilesis_not_modified方法来实现。

示例:

from starlette.staticfiles import StaticFiles

class MyStatics(StaticFiles):

    def is_not_modified(
            self, response_headers: Headers, request_headers: Headers
    ) -> bool:
        # your own cache rules goes here...
        return False

...

Mount('/static', app=MyStatics(directory='static'), name="static"),]

关于python-3.x - 如何禁用Starlette静态文件缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66093397/

相关文章:

python - 使用 FastAPI 在基于 Python 的 GraphQL 服务器中进行身份验证验证

Python ssl.get_server_certificate 下载错误的证书?

python - 在 Linux 下运行 pygame 时摆脱终端

python - 三个序列的最长公共(public)子序列

python - 有没有办法标记特定的类方法?

mime-types - 有没有办法为 Starlette/Uvicorn 显式设置 MIME 类型?

java - 将 Flask 消息淡出为多条消息

static-files - 使用 FastAPI/Starlette 提供静态文件时的相对 URL 路径

python - FastAPI:如何通过 API 下载字节

python - 如果任务对象存储在实例变量中,Starlette + asyncio.create_task() 不会记录错误