ฉันจะเปิดใช้งาน IIS7 เพื่อ gzip ไฟล์คงที่เช่น js และ css ได้อย่างไรและฉันจะทดสอบได้อย่างไรว่า IIS7 gziping จริง ๆ ก่อนส่งให้ลูกค้าหรือไม่
ฉันจะเปิดใช้งาน IIS7 เพื่อ gzip ไฟล์คงที่เช่น js และ css ได้อย่างไรและฉันจะทดสอบได้อย่างไรว่า IIS7 gziping จริง ๆ ก่อนส่งให้ลูกค้าหรือไม่
คำตอบ:
คุณสามารถเปิดใช้งานการบีบอัด GZIP ทั้งหมดในWeb.config
ไฟล์ของคุณ สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณอยู่บนโฮสติ้งที่ใช้ร่วมกันและไม่สามารถกำหนดค่า IIS โดยตรงหรือคุณต้องการให้การตั้งค่าของคุณดำเนินการระหว่างสภาพแวดล้อมทั้งหมดที่คุณกำหนดเป้าหมาย
<system.webServer>
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
<dynamicTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>
หากต้องการทดสอบว่าการบีบอัดทำงานได้หรือไม่ให้ใช้เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ใน ChromeหรือFirebug สำหรับ Firefoxและตรวจสอบให้แน่ใจว่าได้ตั้งค่าส่วนหัวการตอบกลับ HTTP:
Content-Encoding: gzip
โปรดทราบว่าส่วนหัวนี้จะไม่ปรากฏหากรหัสการตอบสนองคือ 304 (ไม่ได้แก้ไข) หากเป็นกรณีนี้ให้ทำการรีเฟรชเต็มรูปแบบ (กด Shift หรือควบคุมค้างไว้ในขณะที่คุณกดปุ่มรีเฟรช) และตรวจสอบอีกครั้ง
.js
ไม่ใช่ ลองเพิ่มapplication/x-javascript
อีกครั้ง ใช้ร่วมกับโพงดังนั้นจึงลบdirectory
พารามิเตอร์
คุณจะต้องเปิดใช้งานคุณสมบัติในแผงควบคุมคุณลักษณะ Windows:
Global Gzip ใน HttpModule
หากคุณไม่มีสิทธิ์เข้าถึงอินสแตนซ์ IIS สุดท้าย (โฮสติ้งที่ใช้ร่วมกัน ... ) คุณสามารถสร้าง HttpModule ที่เพิ่มรหัสนี้ในทุก ๆ เหตุการณ์ของ HttpApplication.Begin_Request:
HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;
การทดสอบ
รุ่งโรจน์ไม่มีวิธีแก้ปัญหาโดยไม่ต้องทดสอบ ฉันชอบใช้ปลั๊กอิน " Liveheaders " ของ Firefox ซึ่งจะแสดงข้อมูลทั้งหมดเกี่ยวกับข้อความ http ทั้งหมดระหว่างเบราว์เซอร์และเซิร์ฟเวอร์รวมถึงการบีบอัดขนาดไฟล์ (ซึ่งคุณสามารถเปรียบเทียบกับขนาดไฟล์บนเซิร์ฟเวอร์)
ฉันต้องการเพิ่มฟีเจอร์ในฟีเจอร์ windows ตามที่ Charlie กล่าวไว้เท่านั้นสำหรับผู้ที่ไม่สามารถค้นหาได้ในวินโดวส์ 10 หรือเซิร์ฟเวอร์ 2012+ ให้ค้นหาดังนี้ ฉันดิ้นรนเล็กน้อย
หากคุณใช้ YSlow กับ Firebug และวิเคราะห์ประสิทธิภาพของหน้าเว็บของคุณ YSlow จะบอกคุณได้อย่างชัดเจนว่าส่วนใดในหน้าเว็บของคุณที่ไม่ใช่ gzip'd!
หากคุณกำลังพยายามที่จะ gzip หน้าแบบไดนามิก (เช่น aspx) และมันไม่ทำงานอาจเป็นเพราะตัวเลือกไม่ได้เปิดใช้งาน (คุณต้องติดตั้งโมดูลการบีบอัดเนื้อหาแบบไดนามิกโดยใช้คุณสมบัติ Windows):
http://support.esri.com/en/knowledgebase/techarticles/detail/38616
อีกวิธีง่าย ๆ ในการทดสอบโดยไม่ต้องติดตั้งอะไรเลยไม่ขึ้นอยู่กับรุ่น IIS วาง URL ของคุณในลิงค์นี้- SEO Checkup
ในการเพิ่มไปยัง web.config: http://www.iis.net/configreference/system.webserver/httpcompression
ลอง Firefox พร้อมติดตั้ง addons Firebug ฉันใช้มัน เครื่องมือที่ยอดเยี่ยมสำหรับนักพัฒนาเว็บ
ฉันได้เปิดใช้งานการบีบอัด Gzip ด้วยเช่นกันใน IIS7 โดยใช้ web.config