Решение
Варианты
- Автоматическое сжатие сервером
- Создать вручную архивную копию каждого JS/CSS и отдавать их вместо не сжатых файлов.
- Использовать mod_deflate
- Использование веб-сервера nginx для сжатия трафика
Автоматическое сжатие сервером
В файле .htaccess нужно прописать:
mod_gzip_on Yes
mod_gzip_item_include file \.js$
mod_gzip_item_include file \.css$
</IfModule>
Создать вручную архивную копию каждого JS/CSS и отдавать их вместо не сжатых файлов.
Нужно вручную все эти файлы упаковать и загрузить на сервер. Одно радует их количество не стремится к бесконечности... С другой стороны нет нагрузки на сервер для создания упакованной копии этого файла. А меняются эти файлы не так уж и часто...
Упаковать *.js файлы в *.js.gz и закачать на сервер в ту же папку, где был оригинальный JS-файл.
В файле .htaccess (в корне сайта) сразу после RewriteEngine on добавить:
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)$ $1.gz
Проверка правильности работы
Загрузить в браузере страницу и посмотреть заголовки запроса:
- Response Headers
- Date Wed, 19 Mar 2008 12:32:09 GMT
- Server Apache
- Cache-Control max-age=1209600
- Expires Wed, 02 Apr 2008 12:32:09 GMT
- Last-Modified Wed, 19 Mar 2008 12:31:38 GMT
- Etag "bdcf97-87d-47e107aa"
- Accept-Ranges bytes
- Content-Length 2173
- Connection close
- Content-Type application/x-gzip
- Content-Encoding gzip
Размер полученного файла должен стать меньше...
Принцип работы
Решение о том, какой файл (сжатый или нет) отдать клиенту принимает mod_rewrite:
Принцип работы:
Если рядом с файлом javascript.js будет находиться его сжатая копия javascript.js.gz и в запросе будет явно указано, что клиент поддерживает gzip-encoding, то клиенту выдаётся сжатая копия. Если сжатие не поддерживается или сжатого файла нет в ответ вернётся оригинальный файл.
В результате трафик сервера и нагрузка на сервер снижается. То же самое можно сделать и для CSS.
Использовать mod_deflate
Krotty@drupal.org предложил:
mod_deflate в стандартной поставке apache 2.x :)
Использование веб-сервера nginx для сжатия трафика
VLAD_X предложил использовать nginx.
Он может просто сжимать статику на лету, а может в точности делать то, что вы хотите: отдавать сжатые файлы вместо несжатых. (Эта возможность появилось недавно в 0.6.x ветке)
Использованные материалы
- Оригинальная статья и комментарии
- Вариант сжатия от Dimm
- Ускорение работы сайта за счёт включения принудительного сжатия




































Комментарии
У Вас в статье 2 существенных недочета
1. Content-Type application/x-gzip
половина браузеров его не поймут, им нужен нормальный тип
2. RewriteCond %{HTTP:Accept-Encoding} gzip
У Konqueror / Safari (windows) есть проблемы с восприятием сжатых файлов, их нужно также включать
Подробное решение описано в приведенной статье
http://webo.in/articles/habrahabr/07-gzip-all/
почему просто не использовать его?
P.S. Исправьте в названии поля для комментария "Домашняя старница" на "Домашняя страница"