Идеальный htaccess для быстрой работы сайта WordPress


Апрель 6, 2017

Идеальный htaccess для быстрой работы сайта Wordpress

Раньше, находясь на хостинге, я часто страдал из-за невозможности добиться большого количества баллов в PageSpeed Insights, так как хостинг не давал возможность включать gzip сжатие и править php.ini (современные навороченные хостинги частично это позволяют делать). Но я привык к тому, что должен иметь максимальный контроль над происходящим. В определенный момент я переехал на отдельный сервер на fastvps за 10 евро, и уже давно храню там все сайты и вроде как все устраивает.

Идеальный htaccess для быстрой работы сайта WordPress

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

Накидал сайт bigbrainstudio.ru когда я с друзьями хотел перерасти в студию, но в итоге каждый разбрелся по своим сферам и по своим клиентам, а сайт остался, пригодится как-нибудь.

Начал разбираться - как выжать максимум скорости из одной странички.

Вывод получился следующим:

  1. 100 баллов практически никогда не получишь на обычном сайте, который юзает яндекс метрику и прочие сторонние скрипты из CDN, так как удаленно подключенные скрипты я не смогу пожать
  2. очень много всего в шапку подключают плагины ненужного, но это решаемо, об этом в другой статье
  3. иногда PageSpeed Insights упорно твердит что GZIP  на сервере не включен, хотя другие тесты говорят обратное, но это иногда.

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

Делюсь шаблоном htaccess с вами

Данный код можете вставлять в конец файла htaccess и бежать проверять скорость сайта (не забудьте кеш почистить перед проверкой)

Основная цель данного кода - правильно настроить сжатие ресурсов сайта и установить нужное время кеширования файлов сайта.


<IfModule mod_headers.c>
 # Serve gzip compressed CSS files if they exist 
 # and the client accepts gzip.
 RewriteCond "%{HTTP:Accept-encoding}" "gzip"
 RewriteCond "%{REQUEST_FILENAME}\.gz" -s
 RewriteRule "^(.*)\.css" "$1\.css\.gz" [QSA]

 # Serve gzip compressed JS files if they exist 
 # and the client accepts gzip.
 RewriteCond "%{HTTP:Accept-encoding}" "gzip"
 RewriteCond "%{REQUEST_FILENAME}\.gz" -s
 RewriteRule "^(.*)\.js" "$1\.js\.gz" [QSA]

 # Serve correct content types, and prevent mod_deflate double gzip.
 RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-gzip:1]
 RewriteRule "\.js\.gz$" "-" [T=text/javascript,E=no-gzip:1]


 <FilesMatch "(\.js\.gz|\.css\.gz)$">
 # Serve correct encoding type.
 Header append Content-Encoding gzip

 # Force proxies to cache gzipped & 
 # non-gzipped css/js files separately.
 Header append Vary Accept-Encoding
 </FilesMatch>
</IfModule>

<IfModule mod_deflate.c>
<FilesMatch "\.(html|txt|xml|js|css|svg)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>

<ifModule mod_headers.c>
 # 43200 - день, 604800 - неделя, 2592000 - месяц
 <FilesMatch "\.(html|js|css)$">
 Header set Cache-Control "max-age=2592000"
 #Header unset Last-Modified
 </FilesMatch>
 <Files *.txt>
 Header add Cache-Control "max-age=43200"
 </Files>
 <FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png|woff|svg)$">
 Header set Cache-Control "max-age=2592000"
 </FilesMatch>
 <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
 # отключить кэширование
 Header unset Cache-Control
 </FilesMatch>
</IfModule>

<IfModule mod_headers.c>
 Header unset ETag
</IfModule>
FileETag None

С такой настройкой можно без особого труда добиваться 80-90 баллов в PageSpeed Insights.

Но нет предела совершенству, полную информацию по общему ускорению сайта распишу в отдельной статье.

 


Также рекомендую к ознакомлению


avatar
  Подписаться  
Уведомление о
Последние комментарии