Як я можу дізнатися, чи мій сервер обслуговує вміст GZipped?


160

У мене є веб-сервер на сервері NGinx. Я встановлюю gzip onу конф-файл і тепер я намагаюся перевірити, чи працює він. YSlow каже, що це не так, але 5 з 6 веб-сайтів, які роблять тест, кажуть, що це так. Як я можу отримати однозначну відповідь на це і чому є різниця в результатах?

Відповіді:


229

Схоже, одна з можливих відповідей, не дивно curl:

$ curl http://example.com/ --silent --write-out "%{size_download}\n" --output /dev/null
31032
$ curl http://example.com/ --silent -H "Accept-Encoding: gzip,deflate" --write-out "%{size_download}\n" --output /dev/null
2553

У другому випадку клієнт повідомляє серверу, що він підтримує кодування вмісту, і ви можете бачити, що відповідь була дійсно коротшою, стиснутою.


3
Це правда, але gzip може бути налаштований на стиснення певних типів файлів та виключення інших. Тому переконайтеся, що файли, які ви згортаєте за допомогою цього тесту, мають тип стискання.
Тайлер Біско

5
Я б запропонував використовувати -Lпрапор curlзанадто, щоб слідкувати за всіма перенаправленнями, наприклад, з не-www, щоб в www.іншому випадку результат size_download може бути невірним
vladkras

Якби я міг вразити одне на своїх молодших дисках, важливість мати міцний фундамент Unix. +1 для CURL Спочатку його плутаєш, рятує життя, коли ти це знаєш.
Акрон

105

Оновлення

Chrome змінив спосіб звітування (див. Оригінальну відповідь, якщо зацікавлено). Ви можете дізнатися за допомогою Інструментів для розробників (F12). Перейдіть на вкладку Мережа, виберіть файл, який ви хочете вивчити, а потім перегляньте вкладку Заголовки праворуч. Якщо ви gzipped, ви побачите це у кодування вмісту.

У цьому прикладі дійсно слайдер.jpg gzipped.

введіть тут опис зображення

Порівняйте це з цією самою сторінкою, на якій ви перебуваєте, і перегляньте png-файл, ви не побачите такого позначення.

введіть тут опис зображення

Щоб було зрозуміло, це не тому, що один - jpg, а один - png. Це тому, що один gzipped, а інший - ні.


Попередній відповідь

Якщо в Chrome ви підтягнете Інструменти для розробників і перейдете на вкладку Мережа, тоді, якщо не буде стиснення, буде показано наступне:

введіть тут опис зображення

І наступне, якщо є стиснення IS:

введіть тут опис зображення

Іншими словами, однакове число, вгорі і внизу, не означає стиснення.


3
Можливо, краще оглянути заголовки відповідей. Цей метод не говорить про те, чи розпочнеться компресія gzip чи інший алгоритм стиснення.
Самуїл

4
На Інструментах для розробників Chrome на вкладці "Мережа" натисніть на назву ресурсу / посилання для запиту, і ви можете ознайомитись із заголовками відповідей, як це зроблено, і побачити gzipключ-кодування вмісту! [Скріншот] [1] [1]: i.stack .imgur.com / Bpb5W.png (http://content.screencast.com/users/…
d48

1
Останні хромовані версії (версія 44.0.2403.130 м), схоже, не показують деталей щодо розміру / вмісту - я маю на увазі деталі gzip - i.imgur.com/MTz7DCM.png . Хтось знає причину, чому?
Енді Дуфресне

33

Дивіться у заголовках відповідей. У FireFox ви можете перевірити Firebug.

Content-Encoding    gzip

Якщо сервер підтримує вміст gzip, він повинен відображатися.


9
Ви отримуєте це лише в тому випадку, якщо ваш клієнт надіслав "Accept-Encoding: gzip, deflate"
Maciej Swic

2
Важко оновити, щоб побачити кодування оригінального файлу, оскільки, коли файл подається зі статусом 304, здається, що кешована версія вже розпакована! (у моєму випадку я бачу заголовок ETag, а не Content-Encoding)
ptim,

11

У новій версії chrome, Інструменти для розробників> мережа, ви можете натиснути правою кнопкою миші на ім'я стовпця та вибрати варіант кодування вмісту та додати цей стовпець (чорне поле у ​​зображенні).

і якщо ви хочете побачити розмір цього вмісту gzip, як @Outfast Source - тоді ви можете натиснути на піктограму, яка знаходиться поруч із View (відображається як Зелене поле на зображенні).

тож ви можете бачити, який вміст увімкнено gzip.

введіть тут опис зображення


Це чудова відповідь, але <kbd> Content-Encoding </kbd> перемістився під <kbd> заголовками відповідей </kbd>.
Дан Даскалеску


8

Я написав цей сценарій на основі відповіді зула:

#!/bin/bash

URL=$1
PLAIN="$(curl $URL --silent --write-out "%{size_download}\n" --output /dev/null)"
GZIPPED="$(curl $URL --silent -H "Accept-Encoding: gzip,deflate" --write-out "%{size_download}\n" --output /dev/null)"

if test $PLAIN -gt $GZIPPED
then echo "supported"
else echo "unsupported"
fi

приклад:

$ ./script.sh https://example.com/
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.