web-dev-qa-db-fra.com

Spécification de la date d'expiration pour les caches de fichiers statiques

Lorsque je teste mon site Web pour SpeedTest je vois beaucoup de expiration non spécifiée error.Vous pouvez voir sur cette page .

J'ai ajouté ce code à mon fichier .htaccess

## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>
## EXPIRES CACHING ##

Mais rien n'a changé. Pouvez-vous me donner un conseil, puis-je spécifier la date d'expiration de mes fichiers statiques?

Serveur: Linux - Apache

15
Eray

j'aime la manière html5boilerplate:

<IfModule mod_expires.c>
  ExpiresActive on

# Perhaps better to whitelist expires rules? Perhaps.
  ExpiresDefault                          "access plus 1 month"

# cache.appcache needs re-requests in FF 3.6 (thx Remy ~Introducing HTML5)
  ExpiresByType text/cache-manifest       "access plus 0 seconds"

# your document html 
  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 feed
  ExpiresByType application/rss+xml       "access plus 1 hour"

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

# media: images, video, audio
  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 files  (css3pie)
  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 2 months"
  ExpiresByType application/javascript    "access plus 2 months"
  ExpiresByType text/javascript           "access plus 2 months"

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

</IfModule>

J'espère que cela peut vous être utile. Source: https://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess

37
Eduardo

Vous pouvez utiliser mod_headers pour faire le tour:

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
  Header set Cache-Control "max-age=290304000, public"
</FilesMatch>

Ou vous pouvez utiliser mod_expires:

ExpiresByType text/html "access plus 1 month 15 days 2 hours"
ExpiresByType image/gif "modification plus 5 hours 3 minutes"
5
ThoriumBR

Vous devez juste ajouter:

ExpiresByType application/javascript "access plus 1 year"
1
adi23ro

Je vois que vous avez PHP installé (référence wordpress), nous allons donc essayer de diagnostiquer votre problème:

  1. redémarrez votre serveur Web Apache. Si vous possédez le serveur Apache (accès par ligne de commande), vous pouvez le faire comme tel .
  2. crée une page phpinfo . Cela vous permettra de voir les modules Apache installés. Recherchez le module mod_expires.c que vous souhaitez utiliser (vous devriez pouvoir faire une demande CTL-F (trouver) dans votre navigateur pour mod_expires). Si vous le trouvez - BON! Sinon, vous devez installer mod_expires sur votre serveur Apache. Si vous possédez votre serveur Apache, vous pouvez rechercher comment installer des modules pour votre système d'exploitation spécifique. Dans le cas contraire, vous pouvez vérifier auprès de votre fournisseur d'hébergement comment installer ce module. Une fois installé, continuez.
  3. modifiez votre entrée http.conf pour inclure "plus" dans votre expression
  4. redémarrer Apache à nouveau
  5. Test =)
1
Steve Siebert

Peut-être que vous n'avez pas chargé mod_expires, la strophe entière est donc un no-op. Ou AllowOverride est None et votre fichier .htaccess n'est pas traité.

0
covener