• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
+380 (44) 364 05 71

Кеширование статики используется для ускорения загрузки сайта. При отключенной функции кеширования каждый раз, когда клиент заходит на Ваш сайт - он запрашивает все файлы, которые относятся именно к данному домену. В их число входят все статические файлы, картинки, яваскрипты и прочее. Тем самым требуется больше времени для загрузки определенной страницы. Но можно уменьшить время загрузки страницы благодаря кешированию. Данная опция заключается в следующем - клиент, одноразово зайдя на Ваш сайт и загрузив все данные, часть из них сохраняет локально на ПК в кеше браузера. Соответственно, в дальнейшем при переходе по страницам часть данных уже не грузится с сайта, а берется из кэша, тем самым время загрузки страницы значительно уменьшается и снижается нагрузка на сервер. Данную функцию очень полезно подключать к сайтам, где используется большое количество картинок.

По умолчанию в базовой конфигурации системы кеширование не подключено, его необходимо настроить самостоятельно.

При различных конфигурациях сервера кеширование так же включается по разному. Рассмотрим два наиболее популярных варианта.

1. Использование только Apache для работы веб сервера.

Если же все данные отдаются только через apache - подключения кеширования производится через файл .htaccess для каждого домена. Добавляем следующие строки.

 

<ifModule mod_deflate.c> 
    AddOutputFilterByType DEFLATE text/html text/xml text/css text/plain
    AddOutputFilterByType DEFLATE image/svg+xml application/xhtml+xml application/xml
    AddOutputFilterByType DEFLATE application/rdf+xml application/rss+xml application/atom+xml
    AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript application/json
    AddOutputFilterByType DEFLATE application/x-font-ttf application/x-font-otf x-font/eot x-font/ashx
    AddOutputFilterByType DEFLATE font/truetype font/opentype 
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 
</ifModule>

<ifModule mod_expires.c>  
    ExpiresActive On
    ExpiresDefault "access plus 3600 seconds" 
    ExpiresByType image/x-icon "access plus 2592000 seconds"
    ExpiresByType image/jpeg "access plus 2592000 seconds"
    ExpiresByType image/png "access plus 2592000 seconds"
    ExpiresByType image/gif "access plus 2592000 seconds"
    ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
    ExpiresByType text/css "access plus 604800 seconds"
    ExpiresByType text/javascript "access plus 604800 seconds"
    ExpiresByType application/javascript "access plus 604800 seconds"
    ExpiresByType application/x-javascript "access plus 604800 seconds"
    ExpiresByType text/html "access plus 600 seconds"
    ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>

<ifModule mod_headers.c> 
    <filesMatch "\.(ico|jpe?g|png|gif|swf)$">
      Header set Cache-Control "max-age=2592000, public"
    </filesMatch>
    <filesMatch "\.(css)$">
      Header set Cache-Control "max-age=604800, public"
    </filesMatch>
    <filesMatch "\.(js)$">
      Header set Cache-Control "max-age=604800, public"
    </filesMatch>
</ifModule>

 

2. Использование связки Apache+Nginx для работы веб сервера.

Для подключения кеширования необходимо отредактировать конфигурационный файл nginx /etc/nginx/nginx.conf. В него добавляем в секцию location для статики строку expires 1d; . Это значит, что файлы статики будут храниться в кеше браузера 24 часа. Ниже приведен общий пример при использовании панели ISPManager4. В случае использования других панелей управления или ручной настройке конфигурации Вам необходимо будет откорректировать размещение данной диррективы в соотвествии с Вашими правилами настроек выдачи статики сервером nginx.

 

server {
              server_name www.domain.com.ua domain.com.ua;
              listen my-ip-address:80;
              disable_symlinks if_not_owner from=$root_path;
              location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
                        root $root_path;
                       expires 7d;
                        error_page 404 = @fallback;
              }
}

После этого сохраняем файл и проверяем правильность конфигурации nginx следующей коммандой

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /nginx/nginx.conf test is successful

Если получили ответ как указано выше - значит все хорошо и делаем рестарт сервиса nginx

# /etc/init.d/nginx restart

На этом настройка кеширования завершена.

Для проверки кеширования можно воспользоваться следующим сервисом

После окончания проверки в меню переходите на вкладку Performance Review

Результаты должны быть следующие

 

Как видим в графе Cache Static проверка прошла успешно.

Также при использовании nginx мы рекомендуем включить сжатие для статики. Добавьте указанный текст в конфигурационный файл /etc/nginx/nginx.conf , в секцию http

gzip  on;
# Минимальная длина ответа, при которой модуль будет сжимать файлы, в байтах
gzip_min_length  1000;
# Разрешить сжатие для всех проксированных запросов
gzip_proxied     any;
# MIME-типы которые необходимо жать
gzip_types       text/plain text/css text/js text/xml text/javascript text/json application/xml application/xml+rss application/json application/javascript application/x-javascript;
# Запрещает сжатие ответа методом gzip для IE6  (старый вариант gzip_disable     "msie6";)
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
# Уровень gzip-компрессии. Мы не рекомендуем включать степень сжатия больше 3-4, так как это повышает нагрузку на процессор
gzip_comp_level 3;
Дата: 25.03.2016
Автор: Владимир
Голосование

Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:

comments powered by Disqus
Спасибо, что выбираете FREEhost.UA