refactor: adjust fall-through order of caching scenarios

This commit is contained in:
Arjan Singh 2025-08-25 18:41:01 -07:00
parent 4cb20f7f88
commit 0e524c8c28
No known key found for this signature in database
GPG Key ID: B1102A5F9699979D

View File

@ -57,19 +57,19 @@ async def cache_control(request: web.Request, handler: Callable[[web.Request], A
if request.path.endswith('.js') or request.path.endswith('.css') or request.path.endswith('index.json'):
response.headers.setdefault('Cache-Control', 'no-cache')
elif request.path.lower().endswith(IMG_EXTENSIONS):
if 200 <= response.status < 300:
response.headers.setdefault('Cache-Control', f"public, max-age={ONE_DAY}")
elif response.status == 304:
if response.status == 304:
# 304 Not Modified - don't set cache headers, inherit from original
pass
elif response.status in (301, 308):
elif response.status == 404:
response.headers.setdefault('Cache-Control', f"public, max-age={ONE_HOUR}")
elif 200 <= response.status < 300:
response.headers.setdefault('Cache-Control', f"public, max-age={ONE_DAY}")
elif response.status == 301 or response.status == 308:
# Permanent redirects - cache for 1 day
response.headers.setdefault('Cache-Control', f"public, max-age={ONE_DAY}")
elif 300 <= response.status < 400:
# Temporary redirects (302, 303, 307) and other 3xx - no cache
response.headers.setdefault('Cache-Control', 'no-cache')
elif response.status == 404:
response.headers.setdefault('Cache-Control', f"public, max-age={ONE_HOUR}")
return response