Problème qu'on a avec la conf apache/tomcat par défaut :

Le résultat est fragile, notamment si on veut modifier un fichier n'ayant pas été modifié depuis longtemps.

Exemple :

Solution : forcer une durée fixe de mise en cache

Vincent Bonamy à Rouen a forcé un Cache-Control précis sur ses apaches, du genre : https://www.esup-portail.org/wiki/display/ESUPMU/Optimisation+HTTP+Apache#OptimisationHTTPApache-Cachenavigateur

Pour la majorité des applications cette solution est sans problème. Le seul comportement imprévu concerne les pages qui ne forcent pas de "Cache-Control/Expires" mais qui sont néanmoins potentiellement dynamiques :

Solution proposée sur un reverse proxy

(solution en production à l'université Paris 1 depuis 2018)

Ajouter Cache-Control quand Last-Modified est mis et pas de Expires/Cache-Control

Header setifempty Cache-Control "max-age=86400" "expr=-n resp('Last-Modified') && -z resp('Expires')"
header_filter_by_lua_block {
  if (not ngx.header["Cache-Control"] and not ngx.header["Expires"] and ngx.header["Last-Modified"]) then
     ngx.header["Cache-Control"] = "max-age=86400"
  end
}

NB : 86400 = 24h

Notes

Squid

squid suit globalement les même règles que les navigateur (cf http://www.squid-cache.org/Doc/config/refresh_pattern/) :

Conclusion : même sur un navigateur vierge, on peut avoir une ancienne version à cause du cache squid.

Durée max de mise en cache de squid pour la conf suggérée "refresh_pattern . 0 20% 4320"