J'ai remarqué que certains navigateurs (en particulier Firefox et Opera) sont très zélés dans l'utilisation de copies en cache des fichiers .css et .js , même entre les sessions du navigateur. Cela entraîne un problème lorsque vous mettez à jour l'un de ces fichiers, mais le navigateur de l'utilisateur continue d'utiliser la copie mise en cache.
La question est: quelle est la manière la plus élégante de forcer le navigateur de l'utilisateur à recharger le fichier lorsqu'il a changé?
Idéalement, la solution ne forcerait pas le navigateur à recharger le fichier à chaque visite de la page. Je posterai ma propre solution comme réponse, mais je suis curieux de savoir si quelqu'un a une meilleure solution et je laisserai vos votes décider.
Mise à jour :
Après avoir autorisé la discussion ici pendant un certain temps, j'ai trouvé la suggestion de John Millikin et da5id utile. Il s'avère qu'il y a un terme pour cela: la version automatique .
J'ai posté une nouvelle réponse ci-dessous qui est une combinaison de ma solution d'origine et de la suggestion de John.
Une autre idée suggérée par SCdF serait d'ajouter une fausse chaîne de requête au fichier. (Du code Python pour utiliser automatiquement l'horodatage comme chaîne de requête bidon a été soumis par pi .). Cependant, il y a une discussion pour savoir si le navigateur mettra en cache ou non un fichier avec une chaîne de requête. (N'oubliez pas que nous souhaitons que le navigateur mette le fichier en cache et l'utilise lors de vos prochaines visites. Nous souhaitons uniquement qu'il récupère le fichier lorsqu'il a changé.)
Puisqu'il n'est pas clair ce qui se passe avec une fausse chaîne de requête, je n'accepte pas cette réponse.
iframe.contentWindow.location.reload(true)
. Voir la méthode (4) de stackoverflow.com/a/22429796/999120 - il s'agit d'images, mais la même chose s'applique.
ExpiresActive On ExpiresDefault "modification"
.