web-dev-qa-db-fra.com

Désactivation de la mise en cache dans un flacon

J'ai des problèmes de cache. J'utilise une très petite application Web qui lit un cadre, l'enregistre sur le disque et l'affiche ensuite dans la fenêtre du navigateur.

Je sais que ce n'est probablement pas la meilleure solution, mais chaque fois que j'enregistre ce cadre de lecture avec le même nom, tout navigateur le met en cache.

J'ai essayé d'utiliser les méta-tags html - sans succès:

<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" />

De plus, j'ai déjà essayé celui-ci (spécifique au flacon):

resp.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
resp.headers["Pragma"] = "no-cache"
resp.headers["Expires"] = "0"

Voici comment j'ai essayé de modifier les en-têtes 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"

Encore Google Chrome et Safari font-ils la mise en cache.

Quel pourrait être le problème ici?

Merci d'avance

22
drsealks

D'ACCORD,

enfin cela a fonctionné avec ceci:

@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

Si vous ajoutez ceci, cette fonction sera appelée après chaque demande effectuée. S'il vous plaît, voir ici

Je serais heureux si quelqu'un pouvait m'expliquer pourquoi cet écrasement d'en-têtes ne fonctionnait pas avec le gestionnaire de pages?

Je vous remercie.

42
drsealks

Si vous avez toujours le même problème, Flask n'a pas vu les mises à jour dans les fichiers JS et CSS, car, par défaut, Flask a pour valeur maximale 12 heures. Vous pouvez le définir sur 0 pour résoudre le problème de la manière suivante:

app = Flask(__name__, static_url_path='/static') app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 0

0
Ilyas