Привет!
Есть виртуальный хостинг (да я вкурсе, что в идеале должен быть выделенный сервер), на котором стоит сервер с операционной системой 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; }