.htaccess: Как «Указать валидатор кэша»? - PullRequest
23 голосов
/ 04 сентября 2010

Я запускаю Google PageSpeed ​​на своем сайте, и он говорит мне, что мне нужно
«Указать валидатор кэша».

В следующих ресурсах отсутствует валидатор кэша.Ресурсы, в которых не указан валидатор кэша, не могут быть эффективно обновлены.Укажите заголовок Last-Modified или ETag, чтобы включить проверку кэша для следующих ресурсов:

... затем перечисляются изображения, CSS, JS и т. Д.

Согласно http://code.google.com/speed/page-speed/docs/caching.html#LeverageBrowserCaching:

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

В моем .htaccess есть следующее:

<IfModule mod_headers.c>
    <FilesMatch "\.(bmp|css|flv|gif|ico|jpg|jpeg|js|pdf|png|svg|swf|tif|tiff)$">
        Header set Last-Modified "Tue, 31 Aug 2010 00:00:00 GMT"
    </FilesMatch>
</IfModule>

Что я делаю не так?

Ответы [ 3 ]

16 голосов
/ 05 сентября 2010

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

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 year"
</IfModule>

Попробуйте с этим, если это не сработало, попробуйте добавить это также:

<IfModule mod_headers.c>
    <FilesMatch "\.(bmp|css|flv|gif|ico|jpg|jpeg|js|pdf|png|svg|swf|tif|tiff)$">
        Header set Last-Modified "Mon, 31 Aug 2009 00:00:00 GMT"
    </FilesMatch>
</IfModule>
6 голосов
/ 30 мая 2012

Для того, чтобы «установить валидатор кэша», вам необходимо отправить в заголовки следующее:

Expires или Cache-Control: max-age

AND

Last-Modified или ETag

Так, например, в PHP вы можете добавить следующее для файлов CSS и JS:

<filesMatch "\.(js|css)$">
    Header set Expires "Thu, 21 May 2013 20:00:00 GMT"
    Header set Last-Modified "Thu, 21 May 2012 20:00:00 GMT"
</filesMatch>

Это удовлетворит калькулятор Google Pagespeed.

1 голос
/ 03 октября 2014

Я протестировал все вышеперечисленные коды, но не вижу изменений в рейтинге gtmetrix.Используя этот улучшенный рейтинг Cache-Control (укажите валидатор кэша) для моего сайта WordPress:

## 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 plus 1 year"
</IfModule>
## EXPIRES CACHING ##

<ifModule mod_headers.c>
  <filesMatch "\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
    Header set Cache-Control "max-age=2592000, public"
  </filesMatch>

  <filesMatch "\\.(css)$">
    Header set Cache-Control "max-age=2592000, public"
  </filesMatch>

  <filesMatch "\\.(js)$">
    Header set Cache-Control "max-age=216000, private"
  </filesMatch>

  <filesMatch "\\.(xml|txt)$">
    Header set Cache-Control "max-age=216000, public, must-revalidate"
  </filesMatch>

  <filesMatch "\\.(html|htm|php)$">
    Header set Cache-Control "max-age=1, private, must-revalidate"
  </filesMatch>
</ifModule>

Я рекомендую вам настроить значения максимального возраста для вашего сайта и его файлов самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...