ฉันจะรู้ได้อย่างไรว่าเซิร์ฟเวอร์ของฉันให้บริการเนื้อหา GZipped


160

ฉันมี webapp บนเซิร์ฟเวอร์ NGinx ฉันตั้งค่าgzip onในไฟล์ conf และตอนนี้ฉันกำลังพยายามดูว่าใช้งานได้หรือไม่ 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 เพื่อบีบอัดไฟล์บางประเภทและไม่รวมประเภทอื่น ๆ ดังนั้นให้แน่ใจว่าไฟล์ที่คุณขดโดยใช้การทดสอบนี้เป็นประเภทที่จะถูกบีบอัด
Tyler Biscoe

5
ฉันขอแนะนำให้ใช้-Lflag curlเพื่อติดตามการเปลี่ยนเส้นทางทั้งหมดเช่นจากที่ไม่ใช่ www ไปเป็นwww.อย่างอื่นผลลัพธ์ของ size_download อาจผิด
vladkras

ถ้าฉันสามารถสร้างความประทับใจอย่างหนึ่งให้กับผู้พัฒนาที่อายุน้อยกว่าความสำคัญของการมีรากฐานที่มั่นคง +1 สำหรับ CURL มันทำให้สับสนในตอนแรกมันช่วยชีวิตได้เมื่อคุณรู้
Akron

105

ปรับปรุง

Chrome เปลี่ยนวิธีรายงาน (ดูคำตอบต้นฉบับหากสนใจ) คุณสามารถบอกได้โดยใช้เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ (F12) ไปที่แท็บเครือข่ายเลือกไฟล์ที่คุณต้องการตรวจสอบแล้วดูที่แท็บส่วนหัวทางด้านขวา หากคุณกำลัง gzipped คุณจะเห็นว่าในการเข้ารหัสเนื้อหา

ในตัวอย่างนี้ slider.jpg กำลังถูก gzipped

ป้อนคำอธิบายรูปภาพที่นี่

เปรียบเทียบกับหน้านี้มาก ๆ ที่คุณเปิดดูไฟล์ png คุณจะไม่เห็นชื่อดังกล่าว

ป้อนคำอธิบายรูปภาพที่นี่

เพื่อความชัดเจนมันไม่ได้เกิดจากหนึ่งคือ jpg และอีกอันคือ png เป็นเพราะคนหนึ่งถูก gzipped และคนอื่นไม่ได้


คำตอบก่อนหน้า

ใน Chrome หากคุณดึงเครื่องมือนักพัฒนาซอฟต์แวร์ขึ้นมาแล้วไปที่แท็บเครือข่ายมันจะแสดงสิ่งต่อไปนี้หากไม่มีการบีบอัด:

ป้อนคำอธิบายรูปภาพที่นี่

และต่อไปนี้หากมีการบีบอัด:

ป้อนคำอธิบายรูปภาพที่นี่

กล่าวอีกนัยหนึ่งหมายเลขเดียวกันด้านบนและล่างหมายถึงไม่มีการบีบอัด


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 ไม่มีใครรู้เหตุผลว่าทำไม
Andy Dufresne

33

ดูในส่วนหัวการตอบกลับ ใน FireFox คุณสามารถตรวจสอบกับ Firebug

Content-Encoding    gzip

หากเซิร์ฟเวอร์รองรับเนื้อหา gzip ข้อมูลนี้จะปรากฏขึ้น


9
คุณจะได้รับสิ่งนี้หากลูกค้าของคุณส่ง "ยอมรับการเข้ารหัส: gzip, deflate"
Maciej Swic

2
รีเฟรชอย่างหนักเพื่อดูการเข้ารหัสไฟล์ต้นฉบับเมื่อไฟล์ถูกแสดงด้วยสถานะ 304 ดูเหมือนว่าเวอร์ชันแคชจะถูกคลายซิปแล้ว! (ในกรณีของฉันฉันเห็นส่วนหัว ETag แทนการเข้ารหัสเนื้อหา)
ptim

11

ใน Chrome รุ่นใหม่เครื่องมือสำหรับนักพัฒนา> เครือข่ายคุณสามารถคลิกขวาที่ชื่อคอลัมน์และเลือกตัวเลือกการเข้ารหัสเนื้อหาและเพิ่มคอลัมน์นั้น (กล่องดำในภาพ)

และหากคุณต้องการดูขนาดของเนื้อหา gzip นั้นเป็น @Outfast Source - คุณสามารถคลิกที่ไอคอนซึ่งอยู่ถัดจากมุมมอง (แสดงเป็นช่องสีเขียวในภาพ)

เพื่อให้คุณสามารถดูว่าเนื้อหาใดที่เปิดใช้งาน gzip

ป้อนคำอธิบายรูปภาพที่นี่


นี่เป็นคำตอบที่ดี แต่ <kbd> การเข้ารหัสเนื้อหา </kbd> ได้ย้ายภายใต้ <kbd> ส่วนหัวการตอบสนอง </kbd>
Dan Dascalescu

8

คุณสามารถใช้บริการเว็บอย่างรวดเร็วเช่น: http://www.whatsmyip.org/http-compression-test/

เครื่องมือ "การตรวจสอบ" ของ Google Chrome ในเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์นั้นมีประโยชน์เช่นกัน


8

ฉันเขียนสคริปต์นี้ตามคำตอบของ 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

ตัวอย่าง:

$ ./script.sh https://example.com/
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.