.htaccess: Как указать "Проверка валидатора кеша"?
Я использую 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>
Что я делаю неправильно?
Ответы
Ответ 1
Я думаю, что у вас проблема с 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>
Ответ 2
Для того, чтобы "Установить валидатор кеша", вы должны отправить следующее в своих заголовках:
Expires
или Cache-Control: max-age
и
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.
Ответ 3
Я тестировал все вышеперечисленные коды, но не вижу изменений в ранге 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>
Я рекомендую вам настроить максимальные значения для вашего сайта и сам файл.