Làm cách nào để biết máy chủ của tôi đang phục vụ nội dung GZipped?


160

Tôi có một ứng dụng web trên máy chủ NGinx. Tôi đặt gzip ontrong tập tin conf và bây giờ tôi đang cố gắng xem nó có hoạt động không. YSlow nói không phải vậy, nhưng 5 trong số 6 trang web thực hiện bài kiểm tra nói rằng có. Làm thế nào tôi có thể nhận được một câu trả lời chắc chắn về điều này và tại sao có sự khác biệt trong kết quả?

Câu trả lời:


229

Có vẻ như một câu trả lời có thể là, không ngạc nhiên , 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

Trong trường hợp thứ hai, máy khách nói với máy chủ rằng nó hỗ trợ mã hóa nội dung và bạn có thể thấy rằng phản hồi thực sự ngắn hơn, bị nén.


3
Điều này là đúng, nhưng gzip có thể được cấu hình để nén các loại tệp nhất định và loại trừ các loại khác. Vì vậy, hãy chắc chắn rằng các tệp bạn cuộn bằng thử nghiệm này thuộc loại sẽ được nén.
Tyler Biscoe

5
Tôi sẽ đề nghị sử dụng -Lcờ curlquá để theo dõi tất cả các chuyển hướng, ví dụ từ không phải www đến www.kết quả của size_doad có thể sai
vladkras

Nếu tôi có thể gây ấn tượng một điều về các nhà phát triển trẻ tuổi của tôi, thì tầm quan trọng của việc có một nền tảng unix vững chắc. +1 cho HIỆN TẠI. Nó khó hiểu lúc đầu, một sự cứu rỗi khi bạn biết điều đó.
Akron

105

Cập nhật

Chrome đã thay đổi cách báo cáo (xem câu trả lời ban đầu nếu quan tâm). Bạn có thể nói bằng cách sử dụng Công cụ dành cho nhà phát triển (F12). Chuyển đến tab Mạng, chọn tệp bạn muốn kiểm tra và sau đó nhìn vào tab Tiêu đề ở bên phải. Nếu bạn được nén, thì bạn sẽ thấy điều đó trong Mã hóa nội dung.

Trong ví dụ này, slide.jpg thực sự đang được nén.

nhập mô tả hình ảnh ở đây

So sánh với trang này mà bạn đang xem và nhìn vào tệp png, bạn sẽ thấy không có chỉ định như vậy.

nhập mô tả hình ảnh ở đây

Nói rõ hơn, không phải vì một người là jpg và một người là png. Đó là bởi vì một cái được nén và một cái khác thì không.


Trả lời trước

Trong Chrome, nếu bạn kéo Công cụ dành cho nhà phát triển và chuyển đến tab Mạng, thì nó sẽ hiển thị như sau nếu không có nén:

nhập mô tả hình ảnh ở đây

Và sau đây nếu có nén IS:

nhập mô tả hình ảnh ở đây

Nói cách khác, cùng một số, trên và dưới, có nghĩa là không nén.


3
Nó có thể tốt hơn để kiểm tra các tiêu đề phản ứng. Phương pháp này không cho biết liệu nén gzip được bắt đầu sử dụng hay một số thuật toán nén khác.
Samuel

4
Trong Công cụ dành cho nhà phát triển Chrome trên tab Mạng, nhấp vào tên / liên kết nội dung cho yêu cầu và bạn có thể kiểm tra Tiêu đề phản hồi như vậy và xem gzipkhóa Mã hóa nội dung! [Ảnh chụp màn hình] [1] [1]: i.stack .imgur.com / Bpb5W.png (http://content.screencast.com/users/iêu
d48

1
Các phiên bản chrome gần đây (Phiên bản 44.0.2403.130 m) dường như không hiển thị chi tiết kích thước / nội dung - Ý tôi là chi tiết gzip - i.imgur.com/MTz7DCM.png . Có ai biết lý do tại sao không?
Andy Dufresne

33

Xem trong các tiêu đề phản ứng. Trong FireFox, bạn có thể kiểm tra với Fireorms.

Content-Encoding    gzip

Nếu máy chủ hỗ trợ nội dung gzip thì nó sẽ được hiển thị.


9
Bạn chỉ nhận được điều này nếu khách hàng của bạn đã gửi "Chấp nhận mã hóa: gzip, giảm phát"
Maciej Swic

2
Làm mới khó để thấy mã hóa của tệp gốc, vì khi tệp được cung cấp với trạng thái 304, có vẻ như phiên bản đã lưu trong bộ nhớ cache đã được giải nén! (trong trường hợp của tôi, tôi đang thấy một tiêu đề ETag thay vì Mã hóa nội dung)
ptim

11

Trong phiên bản mới của chrome, Công cụ dành cho nhà phát triển> mạng, bạn có thể nhấp chuột phải vào Tên cột và chọn tùy chọn mã hóa nội dung và thêm cột đó (hộp đen trong hình ảnh).

và nếu bạn muốn xem kích thước của nội dung gzip đó, dưới dạng @Outfast Source - hơn bạn có thể nhấp vào biểu tượng bên cạnh Chế độ xem (được hiển thị dưới dạng hộp Xanh lục trong hình ảnh).

để bạn có thể xem nội dung nào được kích hoạt.

nhập mô tả hình ảnh ở đây


Đây là một câu trả lời tuyệt vời, nhưng <kbd> Mã hóa nội dung </ kbd> đã di chuyển dưới <kbd> Tiêu đề phản hồi </ kbd>.
Dan Dascalescu


8

Tôi đã viết kịch bản này dựa trên câu trả lời của zoul:

#!/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

thí dụ:

$ ./script.sh https://example.com/
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.