2014-09-29 5 views
0

Я только что развернул приложение Django с большинством интерфейсного кода в файлах Javascript. Проблема в том, что всякий раз, когда я делаю обновление для своих JS-файлов, это не отражается на том, что кто-то открывает страницу, так как они получают ответ '200 (Cached)' и получают предыдущую версию статического файла. Конечно, CTRL-F5 исправляет это.Предотвращение ответов 200 (кэшированных)

Что было бы лучшим способом справиться с этой проблемой? Где можно решить такую ​​проблему?

  • Заголовки в ответ Django?

  • Некоторые Apache конфигурации (так как статические файлы сервера непосредственно из Apache)

  • Что-то еще?

Я не хочу проходить маршрут переименования файлов после каждого изменения, это не похоже на чистое решение для меня. Любая надлежащая техника достижения этого?

Одна вещь, которую я заметил, то 200 (cached) ответ, который я получаю есть это среди заголовков:

Expires:Fri, 28 Nov 2014 04:11:29 GMT 
Last-Modified:Sun, 28 Sep 2014 19:43:58 GMT 

Последний модифицирована Infact должна быть около 29 сентября 2014 9:14 GMT. Может ли это быть чем-то связанным с заголовком Expires? Если да, как я должен истекать, может быть, день или меньше в будущем? Опять же, это должно быть сделано через Apache, я полагаю?

ПРИМЕЧАНИЕ. Производительность/потеря производительности из-за кеширования здесь абсолютно не важна.

ответ

0

Посмотрите на использование WhiteNoise или django-compressor, чтобы справиться с этим.

Большинство развертываний развертывания Django сначала минимизируют CSS/JS и определяют полученный файл с помощью контрольной суммы. Таким образом, файлы можно кэшировать навсегда, поскольку, если они будут изменены, это приведет к другому имени файла.

Поскольку для этого уже есть приложения, надеюсь, это не вызовет у вас слишком много проблем.

Смежные вопросы