2010-10-20 2 views
3

Я использую tyring для реализации кэширования браузеров и следую рекомендациям Google PageSpeed ​​о настройке Last-Modified на данные, достаточно «достаточные в прошлом». У меня есть следующие в моей .htaccess:Last-Modified не работает для .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> 

Я установил mod_headers на моем сервере.

К сожалению, Google PageSpeed ​​все еще жалуется и предупреждает меня:

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: 

А затем перечислены в форматах PNG, GIF-файлы, JPGs и т.д. Yahoo YSlow говорит в основном то же самое.

Глядя на заголовки ответа одного из моих ресурсов, которые должны быть кэширование, я вижу это:

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 

Как вы можете видеть, Last-Modified данных не соответствует тому, что я указал в .htaccess.

Любые идеи, что я делаю неправильно?

ответ

2

Вы считали, что используете unset Last-Modified?

Пример:

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

Раздел FilesMatch выглядит хорошо, так что это, вероятно, лишь некоторые неудобный бит с заголовка Set. Черт, может даже быть чувствительным к регистру. Попробуйте Header set вместо Header Set

Если это не то, что вы хотите, то дайте мне знать, и я подумаю об этом немного больше. Unset должен работать, хотя,

+0

Я попытался 'Заголовок set'; он ничего не сделал. Затем я попробовал «Header unset Last-Modified»; что тоже ничего не делало. Мой .htaccess, похоже, игнорирует директивы заголовка, но уважает директивы сжатия (DEFLATE). Есть еще идеи? – StackOverflowNewbie

+0

На самом деле, я просто прокомментировал свои директивы по сжатию. Однако ресурсы все еще обслуживаются как сжатые. Теперь, я думаю, я потерял больше, чем когда начал. – StackOverflowNewbie

+0

Если вам удобно это делать, не могли бы вы отредактировать исходное сообщение, чтобы включить весь файл .htaccess? Я бы хотел взглянуть на все это, если бы мог. – warandpeace

6

Удаление Last-Modified не является вопросом, на который запрашивается Google PageSpeed. Он хочет, чтобы увидеть следующие заголовки в ответ серверов, когда браузеры просит для статических файлов:

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

вместо точек сервера будет размещать значение.

Для того, чтобы сделать это, вам нужно просто добавить к .htaccess следующие строки:

<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> 

Вы увидите Google PageSpeed ​​останавливая жаловаться.

0

Это работает:

<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

Не могли бы вы объяснить, что такое решение? –

Смежные вопросы