2010-09-04 2 views
21

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

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

... то список изображений, CSS, JS и т.д.

В соответствии с http://code.google.com/speed/page-speed/docs/caching.html#LeverageBrowserCaching:

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

У меня есть следующие в моей .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> 

Что я делаю неправильно?

ответ

15

Я думаю, что проблема у вас есть с 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> 
+0

У меня уже есть вещи: ExpiresByType text/css «доступ плюс 1 год» в mod_expires. Любые другие предложения? – StackOverflowNewbie

+0

попробуйте новый 'Header set Last-Modified 'Mon, 31.08.2009 00:00:00 GMT« вместо того, что у вас есть, это на год старше! – aularon

+0

Пробовал, не имел никакого значения. Любые другие идеи? – StackOverflowNewbie

5

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

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> 

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

1

Я проверил все вышеперечисленные коды, но не вижу изменений в ранге 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> 

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