3 votes

Définir l'en-tête de contrôle du cache en fonction du type de contenu dans apache

Nous essayons de définir l'en-tête Cache-Control à max-age=300, public pour toutes les pages de notre site public. Pour utiliser Filesmatch, mes pages d'application n'ont aucune extension. ExpiresByType est disponible, mais il a ses propres inconvénients.

Je recherche un moyen de définir l'en-tête de contrôle de cache pour toutes les pages de mon application avec le type de contenu text/html. Existe-t-il un moyen d'atteindre cela ?

4voto

Null Points 141

Une manière plus sûre (car les développeurs peuvent faire des erreurs en définissant Content-Type pour les extensions de fichiers) est de définir l'en-tête en fonction du Content-Type réel :

  Header set Cache-Control "max-age=300, public" "expr=%{CONTENT_TYPE} =~ m#text/html#i"

1voto

JayMcTee Points 3673

Le navigateur n'a pas besoin de voir une extension .html pour savoir qu'il s'agit d'un document de type mime text/html. Tant que l'en-tête indique au navigateur client que le document est bien de type mime text/html, cela fonctionnera très bien :

ExpiresByType text/html "access plus 300 seconds"

Si vous détaillez la partie "a ses propres inconvénients", nous pourrons peut-être commenter cela aussi.

0 votes

Je n'ai pas le module mod_expires.so dans notre configuration Apache. Il a été affiné et la seule option que j'ai est de contrôler en définissant max-age dans l'en-tête cache-control. Y a-t-il un moyen que je puisse le faire?

0 votes

Vous ne mentionnez pas la technologie derrière votre application, mais par exemple en PHP, vous pouvez définir les en-têtes de contrôle de cache directement dans le code : stackoverflow.com/questions/4480304/… par ex. header("Cache-Control: max-age=300");

0 votes

Nos pages sont toutes en HTML, générées à partir d'un système de gestion de contenu. Nous avons apache pour gérer notre contenu statique, les règles de réécriture, le proxy inverse, etc.

0voto

Froggiz Points 3005

Comme vous ne pouvez pas utiliser mod_expires, peut-être pouvez-vous utiliser mod_headers à la place : http://httpd.apache.org/docs/2.2/mod/mod_headers.html.

Vous pouvez utiliser filesMatch combiné avec header

Header set Cache-Control "max-age=300, public"

0 votes

J'ai utilisé FilesMatch, mais une chose intéressante à noter est que sauf si vos pages html ont une extension ".html" (ou ".htm"), cette branche ne sera pas invoquée. Il vaut mieux utiliser un type de contenu text/html pour faire la correspondance

0 votes

Oui, de cette façon, vous appliquez la règle uniquement sur les fichiers .htm et .html, ce qui peut empêcher les pages dynamiques (comme le PHP) d'être mises en cache si elles envoient des en-têtes HTML

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X