mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
from typing import Any
|
|
|
|
from starlette.responses import Response
|
|
from starlette.staticfiles import StaticFiles
|
|
|
|
|
|
class NoCacheStaticFiles(StaticFiles):
|
|
"""
|
|
This class is used to override the default caching behavior of starlette for static files,
|
|
ensuring we *never* cache static files. It modifies the file response headers to strictly
|
|
never cache the files.
|
|
|
|
Static files include the javascript bundles, fonts, locales, and some images. Generated
|
|
images are not included, as they are served by a router.
|
|
"""
|
|
|
|
def __init__(self, *args: Any, **kwargs: Any):
|
|
self.cachecontrol = "max-age=0, no-cache, no-store, , must-revalidate"
|
|
self.pragma = "no-cache"
|
|
self.expires = "0"
|
|
super().__init__(*args, **kwargs)
|
|
|
|
def file_response(self, *args: Any, **kwargs: Any) -> Response:
|
|
resp = super().file_response(*args, **kwargs)
|
|
resp.headers.setdefault("Cache-Control", self.cachecontrol)
|
|
resp.headers.setdefault("Pragma", self.pragma)
|
|
resp.headers.setdefault("Expires", self.expires)
|
|
return resp
|