Date d'expiration au niveau des headers HTTP ?...

WRInaute accro
Bonjour


Je suis en train de travailler l'optimisation des perfs d'un site, et des outils comme PageSpeed ou encore YSlow me disent pour certains fichiers, "d'indiquer une date d'expiration de cache" (comme expliqué ici).

(typiquement fichiers JS, CSS et images)

On fait ça comment ? Ces fichiers renvoient un code HTTP 304 au lieu de l'habituel 200, d'après ce que j'ai pu lire ici ou là ce n'est pas anormal, mais cela fausse les mesures des outils de perfs (ils ne considèrent plus ces fichiers comme cachables par les navigateurs, ce qui est semble-t-il quand même le cas)

À noter que j'ai eu le soucis sur un fichier CSS qui était en code 200 ; je l'ai "compressé" et depuis il est en 304 :?: (relation de cause à effet ?)

Un bon lien pour m'expliquer comment ça fonctionne ?


Merci
 
WRInaute accro
Un lien, non. Mais le 304 est normal. C'est l'entête http "Not Modified".
Du coup le navigateur ne récupère que cette entête, s'arrête et prends les données qu'il a en cache.

L'idée est de définir une date d'expiration du cache à une date fortement éloignée dans le future (2040 par exemple).
Tout en placant un paramètre dans l'url du css.
/css/ma_css.css?1234567890
C'est ce paramètre dans l'url que tu change à chaque fois que tu modifie le contenu de ta css. Généralement, on y mets la date unix de dernière modification.

Tous les frameworks corrects gèrent cela en natif.
 
Nouveau WRInaute
Exemple de mise en cache des CSS et JS pour 1 an (à placer dans un htaccess ou directement dans le fichier de config Apache) :

Code:
<IfModule mod_headers.c>
  <FilesMatch "\.(js|css)$">
    Header set Cache-Control "max-age=31536000"
  </FilesMatch>
</IfModule>

kazhar a dit:
Tout en placant un paramètre dans l'url du css.
/css/ma_css.css?1234567890

Pour tenir compte du comportement parfois inattendu des proxies, préférer :
/css/ma_css_1234567890.css
 
WRInaute passionné
il y a aussi cette solution :
Code:
#expiration des pages
ExpiresActive On
ExpiresByType text/css "access plus 10 years"
ExpiresByType application/javascript "access plus 10 years"
 
Discussions similaires
Haut