Попробуйте следующую конфигурацию nginx, чтобы инструктировать браузеры не кэшировать статические файлы.
location / {
add_header Cache-Control "no-store, no-cache, private";
}
Согласно спецификации HTTP1.1
no-store
Цель директивы no-store - предотвратить непреднамеренный выпуск или сохранение конфиденциальной информации (например, на лентах резервных копий).Директива no-store применяется ко всему сообщению и МОЖЕТ быть отправлена либо в ответе, либо в запросе.При отправке в запросе кеш НЕ ДОЛЖЕН хранить какую-либо часть этого запроса или любой ответ на него.При отправке в ответе кэш НЕ ДОЛЖЕН хранить какую-либо часть этого ответа или запроса, который его вызвал.Эта директива применяется как к не совместно используемым, так и совместно используемым кэшам.«НЕ ДОЛЖЕН хранить» в этом контексте означает, что кэш НЕ ДОЛЖЕН преднамеренно хранить информацию в энергонезависимом хранилище и ДОЛЖЕН приложить максимальные усилия для удаления информации из энергозависимого хранилища как можно быстрее после ее пересылки.Даже когда эта директива связана с ответом, пользователи могут явно хранить такой ответ вне системы кэширования (например, с помощью диалога «Сохранить как»).Буферы истории МОГУТ хранить такие ответы как часть их нормальной работы.
Цель этой директивы - удовлетворить заявленные требования определенных пользователей и авторов сервисов, которые обеспокоены случайным выпуском информации через непредвиденный доступ к данным кэша.структур.Хотя использование этой директивы может улучшить конфиденциальность в некоторых случаях, мы предупреждаем, что она никоим образом не является надежным или достаточным механизмом обеспечения конфиденциальности.В частности, злонамеренные или скомпрометированные кэши могут не распознавать или подчиняться этой директиве, а коммуникационные сети могут быть уязвимы для прослушивания.
Однако я бы предложил использовать ManifestStaticFilesStorage
вместо того, чтобы не кэшировать статическиефайлы в браузерах.Это добавит хэш md5 содержимого файла к имени файла.Следовательно, каждый раз, когда изменяется содержимое файла, имя файла изменяется, и браузер делает новый запрос к файлу.Таким образом, браузер может кэшировать статические файлы в течение более длительного времени, увеличивая производительность загрузки страницы.
Чтобы включить ManifestStaticFilesStorage, необходимо убедиться, что выполнены следующие требования:
- для параметра STATICFILES_STORAGE установлено значение
django.contrib.staticfiles.storage.ManifestStaticFilesStorage
- для параметра DEBUG установлено значение False
- вы собрали все свои статические файлы с помощью
collectstatic
команды управления
т.е.
# in settings.py
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'
DEBUG = False
Пробег
python manage.py collectstatic
Мои ссылки: