Отключение кэширования в колбе
У меня есть некоторые проблемы с кешированием. Я запускаю очень маленькое веб-приложение, которое считывает один кадр, сохраняет его на диск и затем показывает его в окне браузеров.
Я знаю, это, вероятно, не лучшее решение, но каждый раз, когда я сохраняю этот кадр чтения с тем же именем, и поэтому любой браузер будет кэшировать его.
Я пытался использовать метатеги html - без успеха:
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
Кроме того, я пробовал этот (с флагом):
resp.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
resp.headers["Pragma"] = "no-cache"
resp.headers["Expires"] = "0"
Вот как я пытался изменить заголовки resp
:
r = make_response(render_template('video.html', video_info=video_info))
r.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
r.headers["Pragma"] = "no-cache"
r.headers["Expires"] = "0"
Тем не менее кэширование Google Chrome и Safari выполняется.
В чем может быть проблема?
Заранее благодарю
Ответы
Ответ 1
OK
наконец, он сработал с этим:
@app.after_request
def add_header(r):
"""
Add headers to both force latest IE rendering engine or Chrome Frame,
and also to cache the rendered page for 10 minutes.
"""
r.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
r.headers["Pragma"] = "no-cache"
r.headers["Expires"] = "0"
r.headers['Cache-Control'] = 'public, max-age=0'
return r
Если вы добавите это, эта функция вызывается после каждого выполненного запроса. Пожалуйста, смотрите здесь
Я был бы рад, если бы кто-нибудь мог объяснить мне, почему это переписывание заголовков не работает из обработчика страницы?
Спасибо.
Ответ 2
Если у вас всегда одна и та же проблема, то Flask не видит обновлений в файлах JS и CSS, потому что по умолчанию Flask имеет максимальное значение 12 часов. Вы можете установить его в 0, чтобы решить проблему следующим образом:
app = Flask(__name__)
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 0
Подробнее см. в документации.