Как увеличить скорость загрузки сайта средствами .htaccess
Одной из важных характеристик сайта является скорость загрузки. Каким бы функциональным, красивым и информационно наполненным сайт ни был, если страницы сайта открываются по 5-10 секунд, постоянных посетителей у сайта не будет. Найдутся подобные, но работающие быстрее, сайты. И к тому же медленный сайт будет хуже «выдаваться» в поиске, ведь с недавних пор скорость загрузки сайтов стала одним из параметров поискового алгоритма Google.
Для оценки скорости загрузки сайта обычно пользуются плагинами браузера или специальными онлайн сервисами. Из плагинов для браузера отмечу Page Speed для Firefox.
Вы можете потратить кучу времени на оптимизацию движка вашего сайта, а тем временем существует простой и быстрый способ ускорить загрузку сайта, а кроме того сэкономить на трафике. Нужно просто сделать соответствующие настройки веб-сервера apache. Для этого необязательно иметь доступ к конфигам апача, достаточно будет файла .htaccess.
Включаем сжатие.
Для включения сжатия файлов с расширениями *.css, *.js, *.html, *.html, *.xhtml, *.php добавляем в .htaccess следующие строки.
<IfModule mod_deflate.c>
<FilesMatch "\.(css|js|x?html?|php)$">
SetOutputFilter DEFLATE
</FilesMatch>
</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 216000 seconds"
ExpiresByType application/x-javascript "access plus 604800 seconds"
ExpiresByType text/html "access plus 3600 seconds"
ExpiresByType application/xhtml+xml "access plus 3600 seconds"
</IfModule>
Добавляем управляющие команды для кэширущих систем (теперь на всех публичных кэширующих системах картинки будут кешироваться в течении 1 месяца, а файлы стилей и javascript — в течении недели).
<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=216000, private"
</FilesMatch>
<FilesMatch "\.(x?html?|php)$">
Header set Cache-Control "max-age=3600, private, must-revalidate"
</FilesMatch>
</IfModule>
Теперь при последовательном просмотре вашего сайта не будут загружаться ранее загруженные таблицы стилей, изображения и файлы с javascript.
Выключаем проверку объектных тегов ETag.
Объектные теги Etag — это механизм проверки на наличие новой версии кэшированного файла. Если удалить заголовок ETag, то браузеры и кэширующие сервера не будут проверять наличие новых версий кэшированных файлов. Т.е. они будут полагаться только на заголовки Cache-Control
и Expires
. Для html-страниц не рекомендуется отключать ETag. Ниже приведены строки, которые нужно добавить в .htaccess:
<ifModule mod_headers.c>
<filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header unset ETag
FileETag None
</filesMatch>
</ifModule>
Удаляем заголовок Last-Modified.
Кроме того, можно удалить запросы браузера If-Modified-Since и If-None-Match, а также ответы на них 304 Not Modified. Это можно сделать добавив следующие строки:
<ifModule mod_headers.c>
Header unset Last-Modified
</ifModule>
Удаление заголовка Last-Modified
приводит к тому, что проверка на измененное содержание не осуществляется до тех пор пока об этом не объявит заголовок Expires
.
Добавив все вышеперечисленное в файл .htaccess вы увеличите скорость загрузки вашего сайта и уменьшите трафик.
По материалам статей: 20+ правил .htaccess, которые должен знать каждый разработчик и Оценка скорости загрузки сайта.
(#) Alexander:
Отлично! Спасибо. Очень помогло!(#) Сергей:
а точно нужно удалять заголовок Last-Modified?У меня до удаления загоовка страница весила 17 килобайт, а после 70.
Все остальные настройки помогои. Смотрю через YSlow в ФФ
(#) dimka:
Наличие заголовка Last-Modified никак на размер страницы не влияет.Это скорее всего файл из кеша браузера, еще до того как вы включили сжатие. Ведь удалив запросы Last-Modified вы определили что проверку файла на предмет изменения не выполнять, а брать файл из кеша до тех пор пока не истечет время, заданное Expires.
Заголовок Last-Modified можно и не удалять. Как с ним так и без него будет работать. Удалив его вы просто сокращаете число запросов к серверу.
(#) Мария:
Про заголовок Last-Modified советую почитать тут http://kvinta-a.ru/last-modified/