Disable caching for first-visit unlocalized homepage

This commit is contained in:
2026-05-12 00:05:53 +02:00
parent b8e5272e26
commit 34d351b2f5

View File

@@ -2,6 +2,7 @@ from __future__ import annotations
from django.conf import settings
from django.http import HttpRequest, HttpResponseRedirect
from django.utils.cache import add_never_cache_headers, patch_vary_headers
from django.utils.translation import (
get_language_from_request,
get_supported_language_variant,
@@ -36,7 +37,11 @@ class FirstVisitLanguageRedirectMiddleware:
redirect_url = self._build_redirect_url(request)
if redirect_url:
return HttpResponseRedirect(redirect_url)
return self.get_response(request)
response = self.get_response(request)
if self._should_disable_home_cache(request):
patch_vary_headers(response, ("Accept-Language", "Cookie"))
add_never_cache_headers(response)
return response
def _build_redirect_url(self, request: HttpRequest) -> str | None:
if request.method != "GET":
@@ -100,3 +105,13 @@ class FirstVisitLanguageRedirectMiddleware:
if normalized in self.supported_languages:
return normalized
return None
def _should_disable_home_cache(self, request: HttpRequest) -> bool:
if request.method != "GET":
return False
if self.language_cookie_name in request.COOKIES:
return False
path = request.path_info or "/"
if path != "/":
return False
return not self._is_localized_path(path)