Привет!
Есть виртуальный хостинг (да я вкурсе, что в идеале должен быть выделенный сервер), на котором стоит сервер с операционной системой FreeBSD 8.3 32 bit, принадлежащая к семейству Unix-систем.
На хостинге доступно следующее программное обеспечение:
Вопрос: какой код нужно вставить в конфигурационный файл на сервере, чтобы включить кэширование в браузере?
На одном сайте кэширование работает, а на Magento нет, хотя оба сайта на одном хостинге. И там и там я указывал одинаковый код для включения кэширования.
Спасибо!
>>да я вкурсе, что в идеале должен быть выделенный сервер
Два сайта из трех которыми я занимаюсь расположены на хостинге и при чем не самом дорогом за 120 рублей в месяц. Вопреки рекомендациям большинство сайтов находятся как раз на обычных виртуальных хостингах даже не на VSD или VPS как их там точно называют.
>>Вопрос: какой код нужно вставить в конфигурационный файл, чтобы включить кэширование?
Из вопроса не совсем ясно какой кэш Вы желаете включить, кэш браузера, memcached, redis...
Предположу что кэш браузера...
Кэширование браузером в Apache можно сделать несколькими способами с помощью модулей headers или(и) expires
и в зависимости от того какие модули установлены в Apache стоит делать настройку.
Вот такие настройки в файле .htaccess работают у меня, используется и headers и expires может так и не совсем правильно, но работает без нареканий.
# Включаем кэш в браузерах посетителей
<IfModule mod_expires.c>
############################################
## Add default Expires header
## http://developer.yahoo.com/performance/rules.html#expires
# Задаем значение по умолчанию (для всех файлов)
ExpiresDefault "access plus 1 year"
</IfModule>
<ifModule mod_headers.c>
# Все html и htm файлы будут храниться в кэше браузера один день
<FilesMatch "\.(html|htm)$">
Header set Cache-Control "max-age=43200"
</FilesMatch>
# Все css, javascript и текстовые файлы будут храниться в кэше браузера одну неделю
<FilesMatch "\.(js|css|txt)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>
# Все флэш файлы и изображения будут храниться в кэше браузера один месяц
<FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
# Отключаем кеширование php и других служебных файлов
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
</IfModule>Так же включить кеширование браузером можно с помощью Nginx, но так как сам этого не делал примеры приводить не буду.
Какими сервисами Вы проверяете на сервере кэширование в браузере?
>>Какими сервисами Вы проверяете на сервере кэширование в браузере?
Кэширование браузером стоит проверять не на сервере, а в браузере.
Стандартной консолью в браузере нажав F12 и выбрав вкладку сеть(network) можно отследить работу кэша.
Включайте, отключайте, смотрите, анализируйте
В фаерфоксе

В хроме

Так-же гугл пэйджспид ругается если кэш не включен
В настоящий момент включить кэширование на веб-сервере Apache в файле .htaccess не предоставляется возможным. Только с помощью ручного файла конфигурации nginx (предварительно переведя сайт в ручной режим настройки).
Я кэширование в браузере включаю в конфигурационном файле в папке etc/nginx/site.conf в веб-сервере Nginx:
# Статические расположения файлов
location ~* ^.+\.(jpg|jpeg|gif|swf|png|ico|mp3|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|dat|avi|ppt|txt|tar|mid|midi|wav|bmp|rtf|wmv|mpeg|mpg|mp4|m4a|spx|ogx|ogv|oga|webm|weba|ogg|tbz|js|7z)$ {
root /home/xxx/xxx.com/docs;
access_log /var/log/xxx.com.access_log combined;
error_page 404 = @fallback;
log_not_found off;
accel_htaccess_switch on;
#Кешируем картинки на 4 месяца
expires 4M;
#Кешируем только на клиентах
add_header Cache-Control private;
}