我在 Python 应用程序中使用 Starlette 框架,并根据文档的要求配置了静态文件:
routes = [
...
Mount('/static', app=StaticFiles(directory='static'), name="static"),]
问题在于 Starlette 正在对这些静态文件执行自动缓存,并且文档中没有有关如何禁用缓存的信息。
我尝试了 asgi-caches,但我很快发现它配置了缓存,但现在似乎无法禁用缓存。
文档中唯一提到禁用缓存的内容是告诉您这是一个“TODO”,并且是一个处理 View 但不处理静态文件的装饰器。
有谁知道如何配置框架以保证 Starlette 不缓存我的静态文件?
最佳答案
似乎没有官方配置可以做到这一点。
但是你可以通过覆盖starlette.staticfiles.StaticFiles
的is_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/