Каким образом можно включить gzip сжатие страниц
Материал из DiPHOST.Ru wiki system
Schors (Обсуждение | вклад) (Новая страница: «<meta name="keywords" content=".htaccess apache gzip deflate encoding"></meta> <meta name="description" content="Каким образом можно включит…») |
Schors (Обсуждение | вклад) |
||
(9 промежуточных версий не показаны.) | |||
Строка 3: | Строка 3: | ||
<meta name="title" content="Каким образом можно включить gzip сжатие страниц"></meta> | <meta name="title" content="Каким образом можно включить gzip сжатие страниц"></meta> | ||
- | + | === Настройка веб-сервера === | |
- | + | ||
- | + | ||
- | + | ||
- | + | Можно использовать специальный модуль веб-сервера apache. Для автоматического сжатия текстовых файлов достаточно добавить в файл .htaccess: | |
- | + | <IfModule deflate_module> | |
- | + | AddOutputFilterByType DEFLATE text/html text/plain text/xml text/x-js text/javascript text/css | |
- | + | AddOutputFilterByType DEFLATE application/xml application/xhtml+xml | |
+ | AddOutputFilterByType DEFLATE application/x-javascript application/javascript | ||
+ | AddOutputFilterByType DEFLATE application/json | ||
+ | </IfModule> | ||
- | + | Однако, этот модуль будет пытаться сжимать все файлы указанных MIME-типов, несмотря на размер. Что может в некоторых случаях увеличивать итоговый размер информации. | |
- | + | ||
- | + | ||
- | <FilesMatch .*\.js\.gz$> | + | {{warning| Обратите внимание, что для сжатия ответов приложений [[WSGI| WSGI]], следует положить соответствующий файл .htaccess в директорию /home/{{hl|<ваш логин>}}/www/site{{hl|<номер сайта>}}/webapp/ }} |
+ | |||
+ | === Сжатие вручную === | ||
+ | |||
+ | Большие css и js самостоятельно сжать. Попробуйте упаковать файлы css и js в gzip так, чтобы рядом с исходными файлами находились их упакованные версии с расширением gz (например style.css.gz)ю Это можно сделать через консоль [[SSH]] такой командой: | ||
+ | |||
+ | gzip my_big_file.css > my_big_file.css.gz | ||
+ | |||
+ | После этого в файл .htaccess вашего сайта надо будет прописать: | ||
+ | |||
+ | RewriteEngine on | ||
+ | |||
+ | RewriteCond %{HTTP:Accept-encoding} gzip | ||
+ | RewriteCond %{REQUEST_FILENAME}\.gz -s | ||
+ | RewriteRule ^(.*)\.css $1\.css\.gz [QSA] | ||
+ | |||
+ | RewriteCond %{HTTP:Accept-encoding} gzip | ||
+ | RewriteCond %{REQUEST_FILENAME}\.gz -s | ||
+ | RewriteRule ^(.*)\.js $1\.js\.gz [QSA] | ||
+ | |||
+ | <FilesMatch .*\.js\.gz$> | ||
ForceType text/javascript | ForceType text/javascript | ||
Header set Content-Encoding gzip | Header set Content-Encoding gzip | ||
Header append Vary Accept-Encoding | Header append Vary Accept-Encoding | ||
- | </FilesMatch> | + | </FilesMatch> |
- | + | ||
- | <FilesMatch .*\.css\.gz$> | + | <FilesMatch .*\.css\.gz$> |
ForceType text/css | ForceType text/css | ||
Header set Content-Encoding gzip | Header set Content-Encoding gzip | ||
Header append Vary Accept-Encoding | Header append Vary Accept-Encoding | ||
- | </FilesMatch> | + | </FilesMatch> |
+ | |||
+ | В результате все обращения браузера к js и css файлам будут перенаправляться на их | ||
+ | сжатые копии, а браузеру будет сообщаться, что эти файлы упакованы в gzip. | ||
+ | |||
+ | === Сжатия статики, отдаваемой Nginx === | ||
- | + | [[Cookbook_nginx|Рецепты nginx]], которые предусматривают обработку статических файлов напрямую nginx, сжимают текстовые файлы автоматически. | |
- | + | ||
- | + | ||
[[Category:HowTo]] | [[Category:HowTo]] |
Текущая версия на 12:13, 25 февраля 2015
Настройка веб-сервера
Можно использовать специальный модуль веб-сервера apache. Для автоматического сжатия текстовых файлов достаточно добавить в файл .htaccess:
<IfModule deflate_module> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/x-js text/javascript text/css AddOutputFilterByType DEFLATE application/xml application/xhtml+xml AddOutputFilterByType DEFLATE application/x-javascript application/javascript AddOutputFilterByType DEFLATE application/json </IfModule>
Однако, этот модуль будет пытаться сжимать все файлы указанных MIME-типов, несмотря на размер. Что может в некоторых случаях увеличивать итоговый размер информации.
ВНИМАНИЕ! Обратите внимание, что для сжатия ответов приложений WSGI, следует положить соответствующий файл .htaccess в директорию /home/<ваш логин>/www/site<номер сайта>/webapp/ |
Сжатие вручную
Большие css и js самостоятельно сжать. Попробуйте упаковать файлы css и js в gzip так, чтобы рядом с исходными файлами находились их упакованные версии с расширением gz (например style.css.gz)ю Это можно сделать через консоль SSH такой командой:
gzip my_big_file.css > my_big_file.css.gz
После этого в файл .htaccess вашего сайта надо будет прописать:
RewriteEngine on RewriteCond %{HTTP:Accept-encoding} gzip RewriteCond %{REQUEST_FILENAME}\.gz -s RewriteRule ^(.*)\.css $1\.css\.gz [QSA] RewriteCond %{HTTP:Accept-encoding} gzip RewriteCond %{REQUEST_FILENAME}\.gz -s RewriteRule ^(.*)\.js $1\.js\.gz [QSA] <FilesMatch .*\.js\.gz$> ForceType text/javascript Header set Content-Encoding gzip Header append Vary Accept-Encoding </FilesMatch> <FilesMatch .*\.css\.gz$> ForceType text/css Header set Content-Encoding gzip Header append Vary Accept-Encoding </FilesMatch>
В результате все обращения браузера к js и css файлам будут перенаправляться на их сжатые копии, а браузеру будет сообщаться, что эти файлы упакованы в gzip.
Сжатия статики, отдаваемой Nginx
Рецепты nginx, которые предусматривают обработку статических файлов напрямую nginx, сжимают текстовые файлы автоматически.