Этот каталог статей:
- Преимущества включения сжатия gzip
- Настройки gzip Webpack
- настройки gzip для Nginx
- Как проверить gzip?
- Разница между двусторонним Gzip и его значение
1. Преимущества включения сжатия gzip
Размер файла может быть уменьшен, а скорость передачи выше.gzip
это эффективный способ сэкономить трафик и ускорить работу вашего сайта.
Его можно настроить, когда сервер отправляет данныеContent-Encoding:gzip
, пользователь указывает, как данные сжимаются
После того, как клиент получает данные, он проверяет информацию соответствующего поля и может декодировать ее в соответствии с соответствующим форматом.
Когда клиент запрашивает, вы можете использоватьAccept-Encoding:gzip
, пользователь указывает, какие методы сжатия принимаются.
существуетhttp/1.0
Данные, отправляемые сервером в протоколе, можно настроить с помощьюContent-Encoding
Поле, это поле используется для описания метода сжатия данных
Content-Encoding: gzip
Content-Encoding: compress
Content-Encoding: deflate
После получения возвращенных данных клиент проверяет информацию соответствующего поля, а затем выполняет соответствующее декодирование согласно соответствующему формату. Когда клиент запрашивает, он может использоватьAccept-Encoding
Поля описывают, какие методы сжатия он принимает.
Accept-Encoding: gzip, deflate
2. Webpack
изgzip
настраивать
Здесь используются следующие плагины:CompressionWebpackPlugin
const CompressionWebpackPlugin = require('compression-webpack-plugin')
module.exports = {
“plugins”:[new CompressionWebpackPlugin]
}
Конкретная конфигурация:
const CompressionWebpackPlugin = require('compression-webpack-plugin');
webpackConfig.plugins.push(
new CompressionWebpackPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: new RegExp('\\.(js|css)$'),
// 只处理大于xx字节 的文件,默认:0
threshold: 10240,
// 示例:一个1024b大小的文件,压缩后大小为768b,minRatio : 0.75
minRatio: 0.8 // 默认: 0.8
// 是否删除源文件,默认: false
deleteOriginalAssets: false
})
)
gzip
После размера от277KB
только~91.2KB
!
3. Nginx
изgzip
настраивать
Открыть/etc/nginx/conf.d
Напишите следующую конфигурацию.
server {
gzip on;
gzip_static on;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_proxied any;
gzip_vary on;
gzip_comp_level 6;
gzip_buffers 16 8k;
# 注:99.99%的浏览器基本上都支持gzip解压了,所以可以不用设这个值,保持系统默认即可。
gzip_http_version 1.1;
...
}
gzip on|off
:
- По умолчанию:
gzip off
- включено или выключено
gzip
модуль
gzip_static on|off
:
- По умолчанию: gzip_static выключен
-
nginx
Модуль обработки статических файлов - Этот модуль может читать предварительно сжатые
gz
файл, что уменьшает количествоgzip
сжатыйCPU
ЛФ. - После включения этого модуля
nginx
Сначала проверьте, есть ли запрос на статические файлыgz
Файл в конце, если он есть, верните его напрямуюgz
содержание документа. - Не поддерживается для совместимости
gzip
браузер, включитьgzip_static
модули должны сохранять как исходные статические файлы, так иgz
документ. При этом, в случае большого количества статических файлов, это сильно увеличит место на диске. мы можем использоватьnginx
Реализация функции обратного прокси сохраняет толькоgz
документ.
gzip_types mime-type[mime-type...]
:
- По умолчанию:
gzip_types text/html
(файлы js/css по умолчанию не сжимаются) -
nginx
При использовании в качестве обратного прокси-сервера включите, включите или отключите результат, возвращаемый внутренним сервером.Предпосылка сопоставления заключается в том, что внутренний сервер должен возвращать результат, содержащий"Via"
изheader
голова. - Тип сжатия, соответствующий типу MIME для сжатия
gzip_proxied[off|expired|no-cache|no-store]...:
-
off
- Отключить сжатие всех данных результатов прокси -
no-cache
- включить сжатие, еслиheader
заголовок содержит"Cache-Control:no-cache"
информация заголовка
gzip_vary on|off:
- а также
http
Голова связана, добавить одинvary
Заголовок, для прокси-серверов, некоторые браузеры поддерживают сжатие, некоторые нет, так что не тратьте неподдерживаемые и тоже сжимайте, так по желанию клиентаHTTP
заголовок, чтобы определить, требуется ли сжатие
gzip_comp_level:
-
Значение по умолчанию: 1 (рекомендуется выбрать 4~6)
-
gzip
Степень сжатия/уровень сжатия, уровень сжатия 1-9, чем выше уровень, тем больше степень сжатия и, конечно, больше время сжатия (быстрее передача, но больше потребление ЦП).
gzip_buffers:
-
По умолчанию:
gzip_buffers44k/8k
-
Настраивает систему на получение нескольких единиц кэша для хранения сжатого потока результатов gzip.
-
Например, 4 4 КБ означает, что единица измерения равна 4 КБ, а память применяется в 4 раза больше единицы 4 КБ в соответствии с исходным размером данных. 4 8k означает, что единица измерения равна 8k, и память применяется в 4 раза больше, чем единица 8k в соответствии с исходным размером данных.
-
Если не задано, по умолчанию для хранения результата сжатия gzip выделяется тот же объем памяти, что и для исходных данных.
gzip_http_version:
-
По умолчанию:
gzip_http_version1.1
(То есть запросы для протокола HTTP/1.1 будут сжаты gzip) -
Примечание: 99,99% браузеров в основном поддерживают
gzip
Он был распакован, поэтому вам не нужно устанавливать это значение, просто оставьте системное значение по умолчанию.
После сохранения конфигурации перезапустите Nginx:
$ sudo service nginx restart
4. Как проверить gzip?
можно смотретьNetwork
, но здесь я предпочитаю использоватьcurl
:
Проверьте ответ на запрос для каждого ресурса с помощью curl и проверьтеContent-Encoding
:
показыватьContent-Encoding:gzip
, то есть конфигурация прошла успешно.
5. Разница между двусторонним Gzip и его значение
разница заключается в:
-
Webpack
Сжатие сжимает файлы один раз во время сборки, а затем сохраняет эти сжатые версии на диск. -
nginx
Некоторые пакеты могут иметь встроенное кэширование при сжатии файлов по запросу, поэтому снижение производительности происходит только один раз (или нечасто), но обычно разница в том, что это происходит при ответе на HTTP-запрос. -
Для сжатия в реальном времени часто бывает более эффективно, чтобы вышестоящие прокси-серверы (такие как Nginx) обрабатывали gzip и кэширование, поскольку они специально созданы для этого и не страдают от накладных расходов времени выполнения программ на стороне сервера (многие из них написаны на С) .
-
использовать
Webpack的
Преимущества,Nginx
Каждый раз, когда серверу требуется длительное время для сжатия перед возвратом информации, не только значительно увеличиваются накладные расходы сервера, но и запрашивающий также проявляет нетерпение. мы вWebpack
При упаковке файл с высоким уровнем сжатия напрямую генерируется и размещается на сервере как статический ресурс, в это время гораздо эффективнее будет использовать Nginx в качестве двойной гарантии. -
Примечание. В зависимости от бизнес-конъюнктуры проекта требуется сжатие в режиме реального времени во время запроса или создание сжатых файлов во время построения.
Отказ от ответственности
не предназначен для обученияWebpack
илиNginx
, я просто написал это для удовольствия.
Это означает, что письмо немного грубое, не брызгайте на меня. . .
Спросите рекомендацию инсайдера в Шэньчжэне
Хорошо, давайте закончим еще одну статью и перейдем к теме:
- WeChat:
huab119
- Почта:
454274033@qq.com
Сборник статей автора Nuggets
- «Практика Vue» — плагин Vue CLI за 5 минут
- Вооружите свой интерфейсный проект «Практикой Vue»
- «Intermediate and Advanced Front-End Interview» JavaScript Рукописный код Invincible Cheats
- «Узнайте из исходного кода» ответы на вопросы Vue, которые интервьюеры не знают
- JS-операция «Узнать из исходного кода» в исходном коде Vue
- «Учитесь на основе исходного кода» полностью разбирайтесь в параметрах Vue.
- Правильная позиция для обновления vue-cli3 в проекте "Vue Practice"
- Почему вы до сих пор не можете понять цепочку областей видимости JavaScript?