2010-10-20 4 views
3

Je suis déterminé à implémenter la mise en cache du navigateur et à suivre la recommandation de Google PageSpeed ​​concernant la configuration de Last-Modified à des données «suffisamment éloignées dans le passé». J'ai ce qui suit dans mon .htaccess:Last-Modified ne fonctionne pas pour .htaccess

<IfModule mod_headers.c> 
<FilesMatch "\.(json|pdf|swf|bmp|gif|jpeg|jpg|png|svg|tiff|ico|flv|js)$"> 
    Header Set Last-Modified "Fri, 01 Jan 2010 12:00:00 GMT" 
</FilesMatch> 
</IfModule> 

J'ai des mod_headers installés sur mon serveur.

Malheureusement, Google PageSpeed ​​se plaint et me prévient encore:

Leverage browser caching 

The following cacheable resources have a short freshness lifetime. Specify an expiration at least one week in the future for the following resources: 

Et énumère ensuite PNGs, GIFs, etc., Yahoo JPGs YSlow dit essentiellement la même chose.

En regardant les en-têtes de réponse d'un de mes ressources qui devraient être mise en cache, je vois ceci:

Date:   Tue, 19 Oct 2010 20:12:04 GMT 
Server:   Apache/2.2.14 (Ubuntu) 
Last-Modified: Tue, 07 Sep 2010 23:51:33 GMT 
Etag:   "2e0e34-2a43-48fb413a96a20" 
Accept-Ranges: bytes 
Content-Length: 10819 
Content-Type: image/png 

Comme vous pouvez le voir, les données de dernière mise à jour ne correspond pas à ce que je spécifié dans .htaccess.

Des idées que je fais mal?

Répondre

2

Avez-vous envisagé d'utiliser Unset Last-Modified?

Exemple:

<IfModule mod_headers.c> 
<FilesMatch "\.(json|pdf|swf|bmp|gif|jpeg|jpg|png|svg|tiff|ico|flv|js)$"> 
    Header unset Last-Modified 
</FilesMatch> 
</IfModule> 

La section FilesMatch semble bien, donc il est probablement juste un peu Checklist avec peu Set-tête. Enfer, pourrait même être sensible à la casse. Essayez au lieu de Header Set

Si ce n'est pas ce que vous voulez, alors faites le moi savoir et j'y réfléchirai un peu plus. Unset devrait fonctionner cependant,

+0

J'ai essayé 'tête set'; ça n'a rien fait. Puis j'ai essayé 'Header unset Last-Modified'; cela n'a rien fait non plus. Mon .htaccess semble ignorer les directives d'en-tête, mais respecte les directives de compression (DEFLATE). D'autres idées? – StackOverflowNewbie

+0

En fait, je viens de commenter mes directives de compression. Cependant, les ressources sont toujours servies comme compressées. Maintenant, je pense que je suis plus perdu que quand j'ai commencé. – StackOverflowNewbie

+0

Si cela vous convient, cela vous dérangerait-il d'éditer votre article original pour y inclure l'ensemble du fichier .htaccess? Je voudrais regarder le tout, si je le pouvais. – warandpeace

6

La suppression de Last-Modified n'est pas ce que demande Google PageSpeed. Il veut voir les en-têtes suivants dans votre réponse des serveurs lorsque les navigateurs demande pour les fichiers statiques:

Cache-Control max-age=... 
Expires ... 

en place de points le serveur placera les valeurs.

Pour ce faire, il vous suffit d'ajouter à .htaccess les lignes suivantes:

<IfModule mod_headers.c> 
<FilesMatch "\.(json|pdf|swf|bmp|gif|jpeg|jpg|png|svg|tiff|ico|flv|js)$"> 
    ExpiresActive On 
    ExpiresDefault "access plus 1 year" 
    Header append Cache-Control "public" 
</FilesMatch> 
</IfModule> 

Vous verrez Google PageSpeed ​​arrêter de se plaindre.

0

Cela fonctionne:

<IfModule mod_expires.c> 
# Enable expirations 
ExpiresActive On 
# Default directive 
ExpiresDefault "access plus 1 month" 
# My favicon 
ExpiresByType image/x-icon "access plus 1 year" 
# Images 
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" 
# CSS 
ExpiresByType text/css "access 1 month" 
# Javascript 
ExpiresByType application/javascript "access plus 1 year" 
</IfModule> 
+0

Pourriez-vous expliquer ce que la solution implique? –

Questions connexes