Отключение кэширования в колбе

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

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

Я пытался использовать метатеги 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

Подробнее см. в документации.