Gzip сжатие: разновидности и как включить

Advanced Usage

Multiple compressed files can be concatenated. In this case, gunzip will extract all members at once. For example:

gzip -c file1 > foo.gz
gzip -c file2 >> foo.gz

…then,

gunzip -c foo

…is equivalent to:

cat file1 file2

In case of damage to one member of a .gz file, other members can still be recovered (if the damaged member is removed). However, you can get better compression by compressing all members at once, for example:

cat file1 file2 | gzip > foo.gz

…which compresses better than:

gzip -c file1 file2 > foo.gz

If you want to recompress concatenated files to get better compression, do:

gzip -cd old.gz | gzip > new.gz

If a compressed file consists of several members, the uncompressed size and CRC reported by the —list option applies to the last member only. If you need the uncompressed size for all members, you can use:

gzip -cd file.gz | wc -c

If you want to create a single archive file with multiple members so that members can later be extracted independently, use an archiver such as tar or zip. GNU tar supports the -z option to invoke gzip transparently. gzip is designed as a complement to tar, not as a replacement.

GZIP-сжатие с помощью файла htaccess

Включить GZIP-сжатие также можно без использования плагинов, а с помощью внесения изменений в файл .htaccess вашего сайта.

Для этого войдите в менеджер файлов своей панели управления хостингом (не путайте с админ-панелью WordPress). Найдите там папку с файлами вашего сайта, откройте ее. Там вы увидите несколько папок и сразу после них файл .htaccess

Дважды щелкнув по нему мышкой, вы откроете его и сможете внести изменения.

Вставляйте в конец файла, чтобы не запутаться. Вы всегда сможете удалить внесенные изменения, если они вам не подойдут.

Итак, в конец файла .htaccess вставляем следующий код:

Нажимаем ОК. Проверяем с помощью GIDNetwork. Если GZIP-сжатие включено, то на этом останавливаемся. Если нет, то этот код у вас не работает. Снова открываете .htaccess и вставляете следующий код:

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0 no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
<ifmodule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_item_include file .js$
mod_gzip_item_include file .css$ </ifmodule>
</IfModule>

Снова проверяем. Можно попробовать также еще один код:

Или такой вариант:

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

Всем удачи! Быстрых сайтов! И до новых встреч на workinet24.ru

Модуль ngx_http_gzip_module

                                             

Модуль  — это фильтр,
сжимающий ответ методом gzip,
что позволяет уменьшить размер передаваемых данных в 2 и более раз.

Для записи в лог достигнутого коэффициента сжатия можно использовать переменную
.

Синтаксис:
Умолчание:
gzip off;
Контекст: , , ,

Разрешает или запрещает сжатие ответа методом gzip.

Синтаксис:
Умолчание:
gzip_buffers 32 4k|16 8k;
Контекст: , ,

Задаёт и буферов,
в которые будет сжиматься ответ.
По умолчанию размер одного буфера равен размеру страницы.
В зависимости от платформы это или 4K, или 8K.

Синтаксис:
Умолчание:
gzip_comp_level 1;
Контекст: , ,

Устанавливает сжатия ответа методом gzip.
Допустимые значения находятся в диапазоне от 1 до 9.

Синтаксис:
Умолчание:

Контекст: , ,

Эта директива появилась в версии 0.6.23.

Запрещает сжатие ответа методом gzip для запросов
с полями заголовка “User-Agent”,
совпадающими с заданными регулярными выражениями.

Специальная маска “” (0.7.12) соответствует
регулярному выражению “”, но работает быстрее.
Начиная с версии 0.8.11 из этой маски исключается
“”.

Синтаксис:
Умолчание:
gzip_http_version 1.1;
Контекст: , ,

Устанавливает минимальную HTTP-версию запроса, необходимую для сжатия ответа.

Синтаксис:
Умолчание:
gzip_min_length 20;
Контекст: , ,

Устанавливает минимальную длину ответа, который будет сжиматься методом gzip.
Длина определяется только из поля “Content-Length”
заголовка ответа.

Синтаксис:
Умолчание:
gzip_proxied off;
Контекст: , ,

Разрешает или запрещает сжатие ответа методом gzip для проксированных
запросов в зависимости от запроса и ответа.
То, что запрос проксированный, определяется на основании наличия поля
“Via” в заголовке запроса.
В директиве можно указать одновременно несколько параметров:

запрещает сжатие для всех проксированных запросов,
игнорируя остальные параметры;
разрешает сжатие, если в заголовке ответа есть поле
“Expires” со значением, запрещающим кэширование;
разрешает сжатие, если в заголовке ответа есть поле
“Cache-Control” с параметром “”;
разрешает сжатие, если в заголовке ответа есть поле
“Cache-Control” с параметром “”;
разрешает сжатие, если в заголовке ответа есть поле
“Cache-Control” с параметром “”;
разрешает сжатие, если в заголовке ответа нет поля
“Last-Modified”;
разрешает сжатие, если в заголовке ответа нет поля
“ETag”;
разрешает сжатие, если в заголовке запроса есть поле
“Authorization”;
разрешает сжатие для всех проксированных запросов.
Синтаксис:
Умолчание:
gzip_types text/html;
Контекст: , ,

Разрешает сжатие ответа методом gzip для указанных MIME-типов в дополнение
к “”.
Специальное значение “” соответствует любому MIME-типу
(0.8.29).
Ответы с типом “” сжимаются всегда.

Синтаксис:
Умолчание:
gzip_vary off;
Контекст: , ,

Разрешает или запрещает выдавать в ответе поле заголовка
“Vary: Accept-Encoding”, если активны директивы
,
или
.

достигнутый коэффициент сжатия — отношение размера исходного
ответа к размеру сжатого.

Что такое GZIP-сжатие данных сайта?

Активация сжатия веб-страниц является простым и действенным способом увеличить скорость загрузки сайта. При активации GZIP-компрессора поток передаваемой от сервера браузеру информации перекодируется на лету. В результате браузер клиента получает трафик в сжатом виде (минимального объёма), который распаковывается им при получении.

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

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

Сжатие CSS- и JS-файлов фреймворка UiKit v2.27.4
Файл Размер Размер в сжатом виде Разница Коэффициент сжатия
uikit.js 119 КБ 22 КБ 97 КБ 82%
uikit.min.js 57 КБ 15 КБ 42 КБ 74%
uikit.css 181 КБ 30 КБ 151 КБ 83%
uikit.min.css 105 КБ 19 КБ 86 КБ 81%

Данные таблицы наглядно демонстрируют очень высокую эффективность применения GZIP-сжатия как для обычных, так и для предварительно минифицированных файлов.

Коэффициент сжатия может отличаться в зависимости от содержания и размера файла и может достигать значения в 90%.

Аргументы в пользу применения GZIP-сжатия данных сайта:

Шаг 1 — Включение gzip сжатия

Вы можете включить gzip для вашего сайта используя mod_gzip или mod_deflate. Рекомендуется использовать сжатие mod_deflate, так как оно использует более хороший алгоритм сжатия и сами модули совместимы с более поздними версиями Apache. Больше информации об этих двух методах вы можете найти в этой статье журнала Linux.

Вариант 1 — Редактирование .htaccess

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

<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/xml
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE application/xhtml+xml 
  AddOutputFilterByType DEFLATE application/x-font  
  AddOutputFilterByType DEFLATE application/x-font-truetype  
  AddOutputFilterByType DEFLATE application/x-font-ttf  
  AddOutputFilterByType DEFLATE application/x-font-otf 
  AddOutputFilterByType DEFLATE application/x-font-opentype 
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE font/ttf 
  AddOutputFilterByType DEFLATE font/otf 
  AddOutputFilterByType DEFLATE font/opentype
# For Older Browsers Which Can't Handle Compression
  BrowserMatch ^Mozilla/4 gzip-only-text/html 
  BrowserMatch ^Mozilla/4\.0 no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>

Если ваш сервер не поддерживает mod_deflate, вы можете попробовать альтернативный вариант mod_gzip:

<ifModule mod_gzip.c>
  mod_gzip_on Yes
  mod_gzip_dechunk Yes
  mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
  mod_gzip_item_include mime ^application/x-javascript.*
  mod_gzip_item_include mime ^text/.*
  mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
  mod_gzip_item_exclude mime ^image/.* 
  mod_gzip_item_include handler ^cgi-script$
</ifModule>

Как только изменения будут сохранены, gzip сжатие будет включено.

Вариант 2 — Плагины CMS

Пользователи WordPress могут включить gzip сжатие, установив такие плагины, как GZip Ninja Speed Compression.

На Joomla вы можете включить gzip в панели управления вашим сайтом в разделе Система → Глобальные настройки → Сервер. Вы также можете посетить наше руководство об улучшении производительности Joomla здесь.

Вариант 3 — Включение gzip через cPanel

Если вы используете cPanel, вы можете включить gzip для всех ваших сайтов в разделе Оптимизация сайтов. Подробное руководство может быть найдено здесь.

Вариант 4 — Хостинг на базе Windows

Если вы используете сервер на базе Windows, вы можете включить HTTP сжатие для статического и динамического контента через командную строку:

appcmd set config /section:urlCompression /doDynamicCompression:True
appcmd set config /section:urlCompression /doStaticCompression:True

За подробностями вы можете обратиться к официальному руководству Microsoft.

gzip-сжатие

Apache2 больше не поддерживает модуль mod_gzip, теперь основным модулем является mod_deflate, который мы включили ранее. Чтобы проверить что сжатие работает — убедитесь что ответ содержит заголовок Content-Encoding:

Сжатие может быть настроено для определенных MIME-типов файлов, за это отвечает правило . 

Внимание!

Модуль  при сжатии может удалять заголовок Content-Length, поскольку длина сжатого ответа неизвестна на момент передачи заголовков. Однако, при удалении из ответа заголовка ETag — ситуация нормализуется. Почему?

Примечание

Сжимать изображения и видео файлы особого смысла нет — толку это даст мало, поскольку jpeg или gif уже сами по себе являются сжатыми форматами.

Using gzip and gunzip for Single Files

Let’s use gzip to compress a single file:

This compresses the file data.csv and replaces it with the file data.csv.gz. The -v option lets gzip display the compression ratio.

gzip has compression levels 1-9, where 9 gives us maximum compression but at the slowest speed. The default compression level is 6 and is a good compromise between speed and compression ratio.

Using higher levels of compressions significantly increases compression time, but often with only a slight increase, if any, in the compression ratio.

Here’s how we compress a file with maximum compression level:

Now, let’s use gunzip to decompress a single file from a gzip file:

This decompresses the file data.csv.gz and replaces it with data.csv.

As with gzip, the -v option shows the compression ratio after the file was uncompressed.

Derivatives and other uses

The tar utility included in most Linux distributions can extract .tar.gz files by passing the z option, e.g., tar -zxf file.tar.gz.

zlib DEFLATE is used internally by the Portable Network Graphics (PNG) format.

Since the late 1990s, bzip2, a file compression utility based on a block-sorting algorithm, has gained some popularity as a gzip replacement. It produces considerably smaller files (especially for source code and other structured text), but at the cost of memory and processing time (up to a factor of 4).

AdvanceCOMP and 7-Zip can produce gzip-compatible files, using an internal DEFLATE implementation with better compression ratios than gzip itself—at the cost of more processor time compared to the reference implementation.[citation needed]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector