Я слышал, что статическое содержимое, такое как CSS и JavaScript, лучше доставлять в формате GZip. Сеть разработчиков контента (CDN) всегда так поступает.
Однако я не понимаю, как работает этот формат. Сначала, когда я попытался создать сжатый файл через командную строку. Расширение файла .gz
. Это отличается от .css
и .js
. Как браузеры распознают, какой файл заархивирован или нет.
Во-вторых, как браузеры «распаковывают» файлы? Я перетащил свой index.html.gz
в мои браузеры. Но никто не работал.
Gzip-архив, о котором вы говорите, невидим для конечного пользователя, да и для вас как разработчика. Об этом позаботится ваш веб-сервер и веб-браузер клиента.
Для IIS необходимо включить расширение GZip ISAPI (инструкции можно найти на этом сайте), а для Apache - mod_deflate.
Когда веб-браузер завершил свой запрос, но перед его отправкой в широкий мир, он сжимает содержимое и помещает специальный заголовок, чтобы браузер знал, что содержимое сжато.
Когда веб-браузер получает ответ, он распаковывает данные и читает файл. Это полностью прозрачно для конечного пользователя.
Обычно вы хотите использовать GZip только для текстовых файлов. Нет смысла использовать его на изображениях, так как изображения уже сильно сжаты.
Я заметил уменьшение размера страницы с 90 КБ (время загрузки около 1 секунды) до размера страницы примерно 5 КБ (время загрузки, 0,4 секунды) при включении GZip для всего статического содержимого (CSS, Javascript и т. Д.).
Что бы вы обнаружили, если бы посмотрели пакеты с помощью Wireshark и собрали их заново, вы бы запросили /index.html
, но веб-сервер получит /index.html
, GZip его в /index.html.gz
и отправь его. Веб-браузер знает об этом и разархивирует его, чтобы он вернулся в /index.html
, поэтому, когда вы переходите к просмотру исходного кода, вы видите /index.html
не /index.html.gz
Обычно Gzip-сжатие статического содержимого с веб-сервера выполняется через Apache mod_deflate.
http://httpd.apache.org/docs/2.0/mod/mod_deflate.html
Обычно это делается только с текстовыми файлами в форматах text / plain, text / html и text / xml, это можно сделать с другими типами текстового контента (css, js и т. Д.), Но это может вызвать проблемы с ранними версиями Интернета. исследователь. (править: сейчас v6 и ниже)
Изображения должны быть сжаты в том формате, в котором они хранятся, поэтому к ним не должно применяться дополнительное сжатие (например, mod_deflate).