1

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

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

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

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

文档中唯一提到禁用缓存告诉您它是一个“TODO”并且是处理视图而不是静态文件的装饰器。

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

4

1 回答 1

1

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

但是你可以通过覆盖的方法来做到这is_not_modified一点starlette.staticfiles.StaticFiles

例子:

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"),]
于 2021-10-30T09:09:22.720 回答