Gestion du cache navigateur

Par Huggy, il y a 9 ans


Les bases HTML/CSS

Bonjour à tous,
Voici mon problème:
J'utilise un framework (le mien) qui versionne les liens des css, js et images

Ce que je fais

je rajoute le timestamp du fichier dans les urls

<img src="logo.png?123456789">

dans Apache j'ai rajouté

Header append Cache-Control "public, max-age=31536000"

cela apparait bien dans le navigateur mais il y a un expires qui apparait alors que mod_expires n'est pas chargé
il n'y a pas d'Etag (c'est déjà ça en moins)

Ce que je veux

Je voudrais mettre un max-age très long car de toute façon si je modifie mes fichiers, le timestamp changera.
et sutout éviter les revalidations.

Ce que j'obtiens

lors du reload de ma page j'ai des dizaines de 304 (not modified) inutiles
Sur le site de Grafikart c'est la même chose mais Graph à mis 'must_revalidate' ce qui a mon sens n'e sert à rien si on versionne les fichiers

Sous nginx je maitrise et lors d'un reload je n'ai que la page principale de rechargée.
Quelqu'un a t-il une explication ?

2 réponses

CendFr, il y a 9 ans

version apache si ça peu t'aider

# Expire headers <IfModule mod_expires.c> <FilesMatch "\.(ico|jpg|gif|png|css|js|eot|woff|otf|ttf|svg)$"> RequestHeader unset Cookie Header unset Set-Cookie #Header set Cache-Control "max-age=25200" ExpiresActive on ExpiresDefault "access plus 7 days" </FilesMatch> # KILL THEM ETAGS Header unset ETag FileETag none </IfModule>
Huggy, il y a 9 ans

Merci pour ces infos
Je me suis rendu compte entre temps que c'est le F5 du navigateur qui en plus de faire le reload, il provoque le revalidate.
Si je clique simplement sur le lien de la page précédente, c'est OK pas de 304