Перейти к содержанию
Форум поддержки пользователей VamShop

Кэширование HTTP заголовков


Рекомендуемые сообщения

Гугл при анализе скорости сайта https://developers.google.com/speed/pagespeed/insights/ рекомендует обязательно  указывать в заголовках HTTP дату или срок действия статических ресурсов, тогда браузер будет загружать уже полученные ранее ресурсы с локального диска, а не из Интернета.

 

При этом срок действия по данным этого сервиса не указан для картинок gif, png и jpg, для файлов с расширениями js, .css.

 

Здесь подробная статья на это тему http://www.exlab.net/dev/http-caching.html

 

Как указать сроки действия статических ресурсов применительно к версии 1.64?

 

Заранее  спасибо.

Ссылка на сообщение
Поделиться на другие сайты

Из комментов к статье:

 

запретить кэширование изображений можно средствами веб-сервера, отправляя вместе с ними заголовок  Cache-Control  с директивой  не-магазин . Для этого разместите в папке с картинками файл  .htaccess  со следующим содержимым:

 

<FilesMatch \.(gif|jpg|png)$>    Header append Cache-Control "no-store" </FilesMatch>

 

Попробовал добавить- не помогло- может неправильно прописал?:

 

Было:

 

<FilesMatch ".(php|php3|phtml|inc|c|htm|html|pl|cgi)$">

Order Allow,Deny
Deny from all
</FilesMatch>
 
Стало:
 
<FilesMatch ".(php|php3|phtml|inc|c|htm|html|pl|cgi)$">
Order Allow,Deny
Deny from all
</FilesMatch>
<FilesMatch \.(gif|jpg|png)$>
   Header append Cache-Control "no-store"
</FilesMatch>

 

Ссылка на сообщение
Поделиться на другие сайты

Еще совет:

 

Директивы кеширования

Кэширование для всех типов файлов по времени доступа
ExpiresActive on
ExpiresDefault "access plus 600 seconds"
Кэширование для всех типов файлов по времени изменения
ExpiresActive on
ExpiresDefault "modification plus 600 seconds"
Кэширование для определённых типов файлов
ExpiresByType text/css "modification plus 600 seconds"
ExpiresByType image/jpeg "modification plus 600 seconds"
ExpiresByType image/gif "modification plus 600 seconds"
ExpiresByType image/x-ico "modification plus 600 seconds"
ExpiresByType image/png "modification plus 600 seconds"

Запрет кеширования с помощью сервера Apache

Откройте файл конфигурации сервера Apache httpd.conf и раскомментируйте следующие строчки:

LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
...
AddModule mod_expires.c
AddModule mod_headers.c

Впишите в .htaccess следующее:

# Запрещение кеширования в этой папке # Необходимо включение модулей # mod_headers.c и mod_expires.c # # Заголовок Cache-Control <IfModule mod_headers.c> Header append Cache-Control "no-store, no-cache, must-revalidate" </IfModule> # Заголовок Expires <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "now" </IfModule>

Необходимые заголовки будут передаваться автоматически, и специально их писать в PHP уже не нужно - кэш уже выключен!

 

Кеширование с помощью файла .htaccess

# Разрешение кеширования в этой папке # Необходимо включение модулей # mod_headers.c и mod_expires.c # # Заголовок Cache-Control <IfModule mod_headers.c> Header append Cache-Control "public" </IfModule> # Заголовок Expires <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 1 hours" #ExpiresDefault "access plus 10 years" </IfModule>

Кеширование javascript файлов с помощью файла .htaccess

<FilesMatch .*.js$> ExpiresDefault "access plus 3 days" </FilesMatch>

Будьте осторожны при кешировании, т.к. при изменении файла, пользователь может получить новый вариант только через 3 дня!

 

Отсюда - http://awax-hosting.ru/nastroyka-htaccess.html

 

 

Попробовал добавить в htaccess:

 

ExpiresActive on
ExpiresDefault "modification plus 600 seconds"
ExpiresByType text/css "modification plus 600 seconds"
ExpiresByType image/jpeg "modification plus 600 seconds"
ExpiresByType image/gif "modification plus 600 seconds"
ExpiresByType image/x-ico "modification plus 600 seconds"
ExpiresByType image/png "modification plus 600 seconds"

 

- сайт не открывается- 500 ошибка (

Ссылка на сообщение
Поделиться на другие сайты
Попробуйте добавить в .htaccess:
 
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/x-javascript application/font-woff
</IfModule>
 
<IfModule mod_expires.c> 
  ExpiresActive On
  ExpiresByType text/css "access plus 10 years"
  ExpiresByType text/js "access plus 10 years"
  ExpiresByType text/javascript "access plus 10 years"
  ExpiresByType application/x-javascript "access plus 10 years"
  ExpiresByType application/javascript "access plus 10 years"
  ExpiresByType application/font-woff "access plus 10 years"
  ExpiresByType image/png "access plus 10 years"
  ExpiresByType image/x-icon "access plus 10 years"
  ExpiresByType image/vnd.microsoft.icon "access plus 10 years"
  ExpiresByType image/gif "access plus 10 years"
  ExpiresByType image/jpeg "access plus 10 years"
</IfModule>
 
FileETag none
Но всё равно это обычно настраивается на стороне сервера.
 
Для примера, можете проверить в Google PageSpeed Insight сайт http://demo.vamshop.com
Ссылка на сообщение
Поделиться на другие сайты

 

Попробуйте добавить в .htaccess:
 
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/x-javascript application/font-woff
</IfModule>
 
<IfModule mod_expires.c> 
  ExpiresActive On
  ExpiresByType text/css "access plus 10 years"
  ExpiresByType text/js "access plus 10 years"
  ExpiresByType text/javascript "access plus 10 years"
  ExpiresByType application/x-javascript "access plus 10 years"
  ExpiresByType application/javascript "access plus 10 years"
  ExpiresByType application/font-woff "access plus 10 years"
  ExpiresByType image/png "access plus 10 years"
  ExpiresByType image/x-icon "access plus 10 years"
  ExpiresByType image/vnd.microsoft.icon "access plus 10 years"
  ExpiresByType image/gif "access plus 10 years"
  ExpiresByType image/jpeg "access plus 10 years"
</IfModule>
 
FileETag none
Но всё равно это обычно настраивается на стороне сервера.
 
Для примера, можете проверить в Google PageSpeed Insight сайт http://demo.vamshop.com

 

 

 А в .htaccess имеет какое-то значение порядок деректив?

Все равно где я этот код вставлю - в конце, середине, начале? У меня что-то все попытки его редактирования к белому экрану приводят- уже страшно туда соваться (

Ссылка на сообщение
Поделиться на другие сайты

Без разницы.

 

Но всё равно в VamShop 1 хороших результатов добиться будет сложно из-за плохой структуры исходного кода и сложности выполнения всех рекомендация.

 

Если Вам обязательно нужен хороший результат, смотрите на VamShop 2 версию, там изначально всё уже продумано и предусмотрено.

Ссылка на сообщение
Поделиться на другие сайты

 

Попробуйте добавить в .htaccess:
 
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/x-javascript application/font-woff
</IfModule>
 
<IfModule mod_expires.c> 
  ExpiresActive On
  ExpiresByType text/css "access plus 10 years"
  ExpiresByType text/js "access plus 10 years"
  ExpiresByType text/javascript "access plus 10 years"
  ExpiresByType application/x-javascript "access plus 10 years"
  ExpiresByType application/javascript "access plus 10 years"
  ExpiresByType application/font-woff "access plus 10 years"
  ExpiresByType image/png "access plus 10 years"
  ExpiresByType image/x-icon "access plus 10 years"
  ExpiresByType image/vnd.microsoft.icon "access plus 10 years"
  ExpiresByType image/gif "access plus 10 years"
  ExpiresByType image/jpeg "access plus 10 years"
</IfModule>
 
FileETag none
Но всё равно это обычно настраивается на стороне сервера.
 
Для примера, можете проверить в Google PageSpeed Insight сайт http://demo.vamshop.com

 

 

Я правильно понимаю, что это кэширование на стороне браузера клиента и если я сменю картинку товара, а клиент не почистит кэш браузера, то он этой картинки 10 лет не увидит ;-) ?

 

Может такая конструкция лучше в данном случае "modification plus 600 seconds" ? Но что тут под модификацией подразумевается и как прописать здесь минуты или часы?

 

А подключать надо действительно у хостера.

Ссылка на сообщение
Поделиться на другие сайты

Почему, увидит.

 

Это довльно большая тема оптимизации, как на стороне сервера, так и на стороне VamShop.

 

В VamShop 2 эта работы уже проведена была довольно давно, можете проверить http://demo.vamshop.com в разных сервисах типа:

 

https://developers.google.com/speed/pagespeed/insights/?hl=en&utm_source=wmx&utm_campaign=wmx_otherlinks

http://gtmetrix.com/

http://www.webpagetest.org/

http://www.feedthebot.com/tools/gzip/

 

 

В VamShop 2 по умолчанию сделано всё, что можно для быстрой работы.

 

В блоге vamshop.ru/blog писал на этот счёт.

Ссылка на сообщение
Поделиться на другие сайты

Почему, увидит.

 

Это довльно большая тема оптимизации, как на стороне сервера, так и на стороне VamShop.

 

В VamShop 2 эта работы уже проведена была довольно давно, можете проверить http://demo.vamshop.com в разных сервисах типа:

 

https://developers.google.com/speed/pagespeed/insights/?hl=en&utm_source=wmx&utm_campaign=wmx_otherlinks

http://gtmetrix.com/

http://www.webpagetest.org/

http://www.feedthebot.com/tools/gzip/

 

 

В VamShop 2 по умолчанию сделано всё, что можно для быстрой работы.

 

В блоге vamshop.ru/blog писал на этот счёт.

 

Спасибо за ссылки )

Как хостер подключит сообщу заработало или нет.

Ссылка на сообщение
Поделиться на другие сайты

Да, модули mod_deflate и mod_expires в настройках веб-сервера apache2 включаются.

 

Я своего хостера просить включить, включили.

Ссылка на сообщение
Поделиться на другие сайты

Ответили:

 

Здравствуйте,

кеширование для статического контента настраивается отдельно так как мы используем nginx,

В данном случае рекомендую обратиться к документации, где описаны возможности модуля кеширования на nginx

http://nginx.org/ru/docs/http/ngx_http_headers_module.html

в случае modification plus 600 seconds , дата в заголовке может передаваться в "прошлом времени", если дата модификации была больше 600sec. На данный момент выставил значение expires в 1h. Если необходимо его изменить, сообщите.

 

Теперь этот код надо удалить из .htaccess или же оставить?:

 

<IfModule mod_deflate.c>

    AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/x-javascript application/font-woff
</IfModule>
 
<IfModule mod_expires.c> 
  ExpiresActive On
  ExpiresByType text/css "access plus 10 years"
  ExpiresByType text/js "access plus 10 years"
  ExpiresByType text/javascript "access plus 10 years"
  ExpiresByType application/x-javascript "access plus 10 years"
  ExpiresByType application/javascript "access plus 10 years"
  ExpiresByType application/font-woff "access plus 10 years"
  ExpiresByType image/png "access plus 10 years"
  ExpiresByType image/x-icon "access plus 10 years"
  ExpiresByType image/vnd.microsoft.icon "access plus 10 years"
  ExpiresByType image/gif "access plus 10 years"
  ExpiresByType image/jpeg "access plus 10 years"
</IfModule>
 
FileETag none

 

И надо ли прописывать в .htaccess другие условия уже в соответствии с этой инструкцией http://nginx.org/ru/docs/http/ngx_http_headers_module.html

 

С одной стороны гугл https://developers.google.com/speed/pagespeed/insights/ все также пишет что надо указывать в заголовках HTTP дату или срок действия статических ресурсов, а с другой сам же показывает, что везде указано время 60 минут- правда на скорость загрузки это никак не повлияло

Ссылка на сообщение
Поделиться на другие сайты

Я ж Вам дал ссылки на сервисы, есть гугл, есть chrome developer console, если хотите разобраться, то нужно садиться и разбираться, читать, как решаются проблемы.

Это ж с наскока не решается.

 

Но я ж Вам говорю, в VamShop 1 много нет и хороший балл в google Вы всё равно не получите.

 

Если Вам нужен высокий балл, работайте с VamShop 2.

Ссылка на сообщение
Поделиться на другие сайты

Ответили:

 

Здравствуйте,

кеширование для статического контента настраивается отдельно так как мы используем nginx,

В данном случае рекомендую обратиться к документации, где описаны возможности модуля кеширования на nginx

http://nginx.org/ru/docs/http/ngx_http_headers_module.html

в случае modification plus 600 seconds , дата в заголовке может передаваться в "прошлом времени", если дата модификации была больше 600sec. На данный момент выставил значение expires в 1h. Если необходимо его изменить, сообщите.

 

Теперь этот код надо удалить из .htaccess или же оставить?:

 

<IfModule mod_deflate.c>

    AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/x-javascript application/font-woff
</IfModule>
 
<IfModule mod_expires.c> 
  ExpiresActive On
  ExpiresByType text/css "access plus 10 years"
  ExpiresByType text/js "access plus 10 years"
  ExpiresByType text/javascript "access plus 10 years"
  ExpiresByType application/x-javascript "access plus 10 years"
  ExpiresByType application/javascript "access plus 10 years"
  ExpiresByType application/font-woff "access plus 10 years"
  ExpiresByType image/png "access plus 10 years"
  ExpiresByType image/x-icon "access plus 10 years"
  ExpiresByType image/vnd.microsoft.icon "access plus 10 years"
  ExpiresByType image/gif "access plus 10 years"
  ExpiresByType image/jpeg "access plus 10 years"
</IfModule>
 
FileETag none

 

И надо ли прописывать в .htaccess другие условия уже в соответствии с этой инструкцией http://nginx.org/ru/docs/http/ngx_http_headers_module.html

 

С одной стороны гугл https://developers.google.com/speed/pagespeed/insights/ все также пишет что надо указывать в заголовках HTTP дату или срок действия статических ресурсов, а с другой сам же показывает, что везде указано время 60 минут- правда на скорость загрузки это никак не повлияло

Вы не понимаете....

то, что написано в инструкции прописывается в хостинг панели в конкретных настройках вашего сайта, так как сервер работает не на индейце (apache ) а на nginx

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...