Стиснення GZ для сайту
Створюю і просуваю комерційні сайти та інтернет-магазини з 2008 року. 12-11-2016, 15:48 1 224 0Сучасна верстка без таблиць, відмова від використання инлайновых стилів і стиснення html-сторінок дозволяють досить серйозно зменшити трафік сервера і підвищити швидкість завантаження сайту для користувачів, що працюють на «вузьких каналах.
Виграш в трафіку від стиснення .gz може становити 60-80% (для HTML)!
Підготувуємо архіви .gz в Windows за допомогою безкоштовного архіватора 7-ZIP, вибравши GZip в якості формату при створенні архіву (зверніть увагу: кожен файл в окремому архіві.)
Або є онлайн сервіс - дивитись .
В папці з стилями чи скриптами має лежати аналогічний по назві архів!
В файлі .htaccess, в корені сайту прописуємо:
1. Варіант.
### Асоціація розширень .gz с gzip
AddEncoding gzip .gz
### Задіюємо mod_rewrite
RewriteEngine On
### відаємо foo.bar.gz замість файла foo.bar, якщо foo.bar.gz присутній у тій же дерикторії,
### але і foo.bar. Якщо браузер - Safari, відаємо foo.bar
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{HTTP_USER_AGENT} !Safari
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)$ $1.gz [QSA,L]
Іноді перший варіант не спрацьовує - сервер встановлює HTTP-заголовок Content-Type у application/x-gzip і браузери, які визначають тип даних по ньому (наприклад, Firefox), а не по змісту (IE) «не бачать» скрипти і css.
2. Варіант.
AddEncoding gzip .gz
### 1. Для js-файлів
<FilesMatch "\.js.gz$">
ForceType text/jаvascript
Header set Content-Encoding: gzip
</FilesMatch>
<FilesMatch "\.js$">
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !".*Safari.*"
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule (.*)\.js$ $1\.js.gz [L]
ForceType text/jаvascript
</FilesMatch>
### 2. Для css-файлів
<FilesMatch "\.css.gz$">
ForceType text/css
Header set Content-Encoding: gzip
</FilesMatch>
<FilesMatch "\.css$">
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !".*Safari.*"
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule (.*)\.css$ $1\.css.gz [L]
ForceType text/css
</FilesMatch>
Перевірити відповідь серевера можна за допомогою плагінів, наприклад для Firefox - Live HTTP Headers
Або через онлайн сервіс - наприклад цей
Всім успіхів та вдалого стиснення ZG...
І на останок код для кешування через htaccess:
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
Також про стиснення можна почитати тут і тут