1 votes

Quelle est la syntaxe correcte d'Apache pour un contrôle correct du cache d'expiration ?

Quelques questions sur l'utilisation absolue et optimale des caches dynamiques et statiques.

Actuellement, mon htaccess est configuré comme ci-dessous, et j'ai l'impression de ne pas l'utiliser correctement... Si vous avez des suggestions d'amélioration, je les considère comme des réponses ! J'apprécie beaucoup !

Question1 : des suggestions sur ce que je devrais changer, afin de rendre la mise en cache plus correcte à l'intérieur des deux niveaux ( #### dynamic / #### static)

Question 2 : à quoi servent ces étiquettes IF : <IfModule mod_headers.c> ... </IfModule>
Est-il conseillé de le garder ou non ? Sans elle, il semble qu'elle fonctionne également. Y a-t-il des avantages en termes de vitesse en l'utilisant ?

Question 3 : Dois-je utiliser les deux ExpiresDefault M7200 y Header set Cache-Control "max-age=7200" ou l'un ou l'autre fera-t-il l'affaire ?


<IfModule mod_headers.c>

    ExpiresActive On
    Header unset ETag
    FileETag None
    Header unset Pragma
    ExpiresDefault M14515200

    ##### DYNAMIC PAGES
    <FilesMatch "\\.(htm|php)$">
        ExpiresDefault M7200
        Header set Cache-Control "max-age=7200"
    </FilesMatch>

    ##### STATIC FILES
    <FilesMatch "\\.(ico|jpg|png|gif|svg|swf|css|js|fon|ttf|eot|xml|pdf|flv)$">
        ExpiresDefault M14515200
        Header set Cache-Control "max-age=14515200"
    </FilesMatch>

</IfModule>

2voto

Mike Scott Points 7853

Pour répondre d'abord à la question 2, le wrapper <IfModule> est là pour que votre configuration fonctionne toujours (bien que sans les bits qui définissent les en-têtes) sur une instance d'Apache qui n'inclut pas mod_headers. Sans ce wrapper, une instance d'Apache sans mod_headers échouerait au démarrage.

Pour la question 3, les serveurs web définissent à la fois les en-têtes Expires et Cache-Control parce que l'histoire des en-têtes de mise en cache est longue et confuse, et que couvrir les deux est votre meilleure chance d'amener le plus grand nombre possible d'utilisateurs finaux à respecter les durées de vie de votre cache. Dans 99 % des cas, l'un ou l'autre suffira (dans ce cas, vous pourriez tout aussi bien utiliser max-age et confier au navigateur de l'utilisateur, plutôt qu'à votre serveur, la charge de travail de l'unité centrale consistant à déterminer ce qui se passera dans 7200 minutes à partir de maintenant).

Pour la question 1, si vos pages .htm et .php sont vraiment dynamiques (leur contenu dépend de l'identité de l'utilisateur ou de ce qu'il fait), vous ne devriez pas les autoriser à être mises en cache. Les fichiers .xml sont souvent générés par votre code, et si c'est le cas, ils devraient probablement être inclus dans le contenu dynamique plutôt que statique. Il n'est acceptable de donner à vos fichiers "statiques" une durée de vie aussi longue que si vous avez pris des mesures pour vous assurer qu'ils sont réellement statiques, et que vous ne pouvez jamais modifier le contenu d'un fichier tout en conservant le même nom de fichier. En particulier, si vous modifiez vos fichiers JavaScript ou CSS, les utilisateurs verront des résultats inattendus en fonction de ce qu'ils ont mis en cache et de ce qu'ils n'ont pas mis en cache.

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