Кэширование stati c файлов в браузере - PullRequest
1 голос
/ 21 апреля 2020

Я пытаюсь включить кэширование для файлов * stati c, таких как. css и. js. Я использую сервер WSGI с Python.

. Я попытался установить следующие заголовки для целей кэширования:

headers.add_header('Cache-control', f'public, max-age={expires.strftime(RFC_1123_DATE)}')
headers.add_header('Expires', expires.strftime(RFC_1123_DATE))
headers.add_header('Last-Modified', generate_last_modified())

Заголовки, полученные в браузере:

HTTP/1.0 200 OK
Date: Tue, 21 Apr 2020 08:06:17 GMT
Server: WSGIServer/0.2 CPython/3.6.9
Content-Encodings: 
Content-Type: text/css; charset=UTF-8
Cache-control: public, max-age=Tue, 28 Apr 2020 08:06:17 GMT
Expires: Tue, 28 Apr 2020 08:06:17 GMT
Content-Length: 23399
Last-Modified: Tue, 21 Apr 2020 08:06:1587452777S GMT
Accept-Ranges: bytes

При использовании Chrome этот код работает, а файлы сохраняются и извлекаются из кэша, как и следовало ожидать. Chrome использует заголовок Expires и игнорирует заголовок Cache-Control .

Я проверил свои инструменты разработчика и Отключить кэш не включен. Я проверил свои настройки в Firefox в about: config, похоже, что кеширование включено.

Так чего мне здесь не хватает? Мне не хватает заголовка, требуется ли ETAG, почему Expires работает в Chrome, а не в Firefox?

1 Ответ

0 голосов
/ 21 апреля 2020

Я нашел решение.

Firefox кэш переполнен, поэтому после его очистки он снова начал отправлять заголовок if-Modified-начиная с .

Также мой сервер возвращал текущее время как время последнего изменения вместо фактического времени последнего изменения.

Чтобы решить проблему, все, что мне нужно было сделать, это сравнить if-Modified-начиная с из браузера с последним измененным временем из файла и отправить статус 304, если ничего не изменилось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...