Приложение Flask не отражает новые изменения JS

#javascript #python #caching #flask

#javascript #python #кэширование #flask

Вопрос:

У меня есть следующий код на моем сервере Flask:

     res = Response(resp, mimetype='text/plain')
    res.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
    res.headers["Pragma"] = "no-cache"
    res.headers["Expires"] = "0"

    return res
  

На стороне клиента у меня есть некоторый код javascript (в папке static/JS/ ), который я постоянно редактирую, исправляя ошибки и так далее. Однако изменения, которые я вношу в код javascript (например, добавление предупреждения или инструкции отладки), не выполняются при обновлении страницы в обычном окне Chrome (даже когда я отключаю браузер и перезапускаю его).). Это означает, что оно продолжает запускать более старую (кэшированную копию). Обновление работает правильно, когда я использую окно инкогнито. Есть ли способ, чтобы даже обычное окно браузера всегда могло получать последний код? Я обеспокоен тем, что в производственной среде браузер будет использовать кэшированные копии и вызывать проблему.

Комментарии:

1. Ctrl Shift R это для Chrome. Вам просто нужно очистить кеш в браузере. Найдите его.

2. Я не могу ожидать, что конечный пользователь очистит кеш при изменении любого из моих JS-кодов.

Ответ №1:

Один из способов убедиться, что браузер не кэширует файл, — это изменить URL-адрес при изменении файла. Это можно сделать без изменения имени файла, добавив запрос:

 <script src="myscript.js?version=7">
  

Или, еще лучше:

 <script src="myscript.js?timestamp=2837482.2456">
  

Вы можете создать функцию, которая генерирует URL-адрес с фактической меткой времени файла. Таким образом, браузер будет кэшировать его до тех пор, пока он не изменится.

Если вам интересно… запрос будет проигнорирован. Это не влияет на статические файлы.