DrupalBook.org.ua
Готовые решения для сайта на Drupal.Сжатие трафика
Задача
Ускорить загрузку файлов CSS и JS за счёт сжатия на сервере и передачи сжатой копии браузеру.
Решение
Косметический ремонт и покраска фасадов фасадные работы. | Комфортно водогрейные котлы на твердом топливе. | бесплатные объявления | подать объявление бесплатно | лекарство от простатита
Варианты
- Автоматическое сжатие сервером
- Создать вручную архивную копию каждого JS/CSS и отдавать их вместо не сжатых файлов.
- Использовать mod_deflate
- Использование веб-сервера nginx для сжатия трафика
Автоматическое сжатие сервером
В файле .htaccess нужно прописать:
<IfModule mod_gzip.c>
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 добавить:
RewriteRule ^(.*\.js\.gz)$ - [L]
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
- Ускорение работы сайта за счёт включения принудительного сжатия
Полезные ссылки
- Страница для печати
- 105 reads
Creative Commons: Attribution-Share Alike 2.5
Данные материалы выложены под лицензией Creative Commons: Attribution-Share Alike 2.5. Это значит, что вы можете распространять, копировать и модифицировать эти произведения при условии упоминания авторства оригинала, и при условии, что они также будут распространяться на условиях этой лицензии (то есть, изменённую работу нельзя защитить копирайтом). Подробнее смотри: http://ru.wikipedia.org/wiki/Creative_Commons