web-dev-qa-db-fra.com

Mise en cache des en-têtes HTTP

Je ne suis pas tout à fait sûr des en-têtes HTTP, mais d'après ce que je lis, il est bon d'avoir un certain niveau de mise en cache sur les pages statiques et je ne suis pas sûr que Transfer Encoding: chunked soit une bonne chose. Je ne trouvais pas de réponse précise quant à la meilleure manière d'utiliser ce cache avec mes fichiers PHP de manière à ce que la mise en cache soit activée et que, lorsque le contenu est modifié, le cache soit mis à jour. Si tout va bien, je peux obtenir de l'aide avec ceci, je me demandais lequel des éléments suivants serait le mieux à utiliser ou des conseils:

header('Cache-control: public');

OR

header('Cache-control: max-age=10');

Merci pour votre temps.

4
kabuto178

Dans la plupart des cas, PHP et la mise en cache HTML est incorrecte

En règle générale, il est déconseillé de mettre en cache les fichiers PHP et HTML d'un site. En effet, lorsque vous aurez modifié ces pages, vos visiteurs actuels ne récupéreront pas la page la plus récente sans un rafraîchissement brutal de la page. Il est recommandé par Google Insight de mettre en cache les images et autres fichiers qui ne risquent pas de changer. Ainsi, lorsque vous modifiez des images, vous devez les enregistrer sous un nouveau nom de fichier. Ainsi, vos visiteurs obtiendront les nouveaux fichiers même s'ils disposent d'un cache de 2 semaines sur des fichiers multimédias.

Expire via .HTACCESS

L'un des meilleurs moyens de contrôler les expirations est d'utiliser le fichier .htaccess à l'aide du module Apache2 expires.

Ci-dessous quelques codes recommandés

<IfModule mod_expires.c>
 ExpiresActive on

 ExpiresDefault      "access plus 1 month"
 ExpiresByType text/cache-manifest "access plus 0 seconds"
 #HTML PAGES
 ExpiresByType text/html "access plus 0 seconds"

 #DATA
 ExpiresByType text/xml "access plus 0 seconds"
 ExpiresByType application/xml "access plus 0 seconds"
 ExpiresByType application/json "access plus 0 seconds"

 #RSS
 ExpiresByType application/rss+xml "access plus 1 hour"

 #FAVICON (cannot be renamed)
 ExpiresByType image/x-icon "access plus 1 week"

 #MEDIA
 ExpiresByType image/gif "access plus 1 month"
 ExpiresByType image/png "access plus 1 month"
 ExpiresByType image/jpg "access plus 1 month"
 ExpiresByType image/jpeg "access plus 1 month"
 ExpiresByType video/ogg "access plus 1 month"
 ExpiresByType audio/ogg "access plus 1 month"
 ExpiresByType video/mp4 "access plus 1 month"
 ExpiresByType video/webm "access plus 1 month"

 #HTC TRICK
 ExpiresByType text/x-component "access plus 1 month"

 #WEBFONTS
 ExpiresByType font/truetype "access plus 1 month"
 ExpiresByType font/opentype "access plus 1 month"
 ExpiresByType application/x-font-woff   "access plus 1 month"
 ExpiresByType image/svg+xml "access plus 1 month"
 ExpiresByType application/vnd.ms-fontobject "access plus 1 month"

 #CSS AND JAVASCRIPT
 ExpiresByType text/css "access plus 1 year"
 ExpiresByType application/javascript "access plus 1 year"
 ExpiresByType text/javascript "access plus 1 year"

     <IfModule mod_headers.c>
         Header append Cache-Control "public"
     </IfModule>
 </IfModule>

Dans l'exemple ci-dessus, vous devez utiliser l'en-tête append cache-control public.

Apache DOCS

Si vous êtes bloqué ou si vous avez des questions concernant les types, consultez: http://httpd.Apache.org/docs/2.2/mod/mod_expires.html

1
Simon Hayter