ก่อนอื่นให้ฉันอธิบายว่าทำไมฉันถึงเขียนบทความนี้ และทำไมฉันถึงต้องดิ้นรนกับปัญหาเล็กๆ น้อยๆ นี้ ก่อนอื่น การเปิดการบีบอัดไฟล์คงที่ของ gzip นั้นมีประโยชน์มากในการปรับปรุงความเร็วการเข้าถึงเว็บไซต์ และลดเวลาที่ใช้ไปเดอร์ในการรวบรวมข้อมูลหน้าคงที่ได้อย่างมีประสิทธิภาพ ในเวลาเดียวกัน มันจะไม่ทำให้ไปเดอร์ Baidu 200 0 เช่นการเปิดการบีบอัดไฟล์แบบไดนามิก ปัญหาการรวบรวมข้อมูล. การสร้างเว็บไซต์ Baidu Chinese การเพิ่มประสิทธิภาพและเวลาที่ไม่น่าพอใจจะทำให้การรวบรวมข้อมูลหน้าเว็บภายในน้อยลงโดย Baidu Spider นอกจากนี้ Guoping ยังกล่าวถึงเรื่องนี้ก่อนหน้านี้ในบทความบล็อกของเขา: ความเร็วในการโหลดหน้าเว็บส่งผลต่อผล SEO อย่างไร ในระยะเวลาที่กำหนด เวลาทั้งหมดที่สไปเดอร์ใช้ในการรวบรวมข้อมูลเว็บไซต์จะได้รับการแก้ไข หากความเร็วในการรวบรวมข้อมูลเพิ่มขึ้น จำนวนหน้าที่รวบรวมข้อมูลก็จะมากขึ้น และในทางกลับกัน
เอาล่ะ มาเริ่มกันที่ข้อความหลักกันก่อน ในคำถามที่ 2 ของบทความก่อนหน้า “ผลการทดลองของสไปเดอร์คลานเพจแบบสแตติกและทริกเกอร์การบีบอัด gzip” ฉันเดาว่าเวอร์ชันบีบอัดของเพจสแตติก gzip จะถูกบันทึกบนเซิร์ฟเวอร์อย่างไร สับสนอยู่นาน หลังจากนั้นฉันพบว่าสาเหตุสุดท้ายสำหรับผลลัพธ์ gzip ที่แตกต่างกันที่โฮสต์ทั้งสองส่งคืนคือเวอร์ชัน iis แทนที่จะเป็นการตั้งค่าโฟลเดอร์แคชที่ฉันเดาว่าเล็กเกินไป
ในความเป็นจริง iis7 มีการอัปเดตที่ใหญ่กว่า iis6 ในการบีบอัดแบบคงที่ ใน IIS6 การบีบอัดแบบคงที่จะดำเนินการบนเธรดอื่น ดังนั้นหลังจากได้รับคำขอ HTTP คำขอแรกที่ส่งไปยังเบราว์เซอร์ เวอร์ชัน HTML จะไม่ถูกบีบอัด และ IIS6 จะเริ่มทำงาน ใช้เธรดอื่นเพื่อบีบอัดไฟล์และจัดเก็บเวอร์ชันบีบอัดไว้ในโฟลเดอร์แคชของไฟล์บีบอัดเป็นเวลานาน ในอดีต นั่นคือ บนเซิร์ฟเวอร์ IIS6 หลังจากการบีบอัดเสร็จสิ้น สำหรับคำขอ HTTP ใดๆ สำหรับเวอร์ชันบีบอัดของไฟล์คงที่ IIS6 จะเรียกเวอร์ชันบีบอัดโดยตรงจากโฟลเดอร์แคชและส่งคืนไปยังเบราว์เซอร์
แต่ใน IIS7 การบีบอัดจะดำเนินการบนเธรดหลัก และเพื่อประหยัดค่าใช้จ่ายในการบีบอัด IIS7 จะไม่บันทึกคำขอ HTTP ทั้งหมดเวอร์ชันบีบอัดระยะยาว แต่จะบันทึกเฉพาะไฟล์คงที่ที่ผู้ใช้เข้าถึงบ่อยครั้ง นี่คือสาเหตุที่ทำให้ ครั้งแรกที่ฉันเยี่ยมชม มันไม่ได้ถูกบีบอัด เวอร์ชันบีบอัดถูกส่งคืนเมื่อฉันเข้าชมอีกครั้งในช่วงเวลาสั้น ๆ แต่เวอร์ชันที่ไม่มีการบีบอัดถูกส่งคืนเมื่อฉันเข้าชมหลังจากนั้นไม่กี่นาที ที่นี่เราสามารถเข้าใจได้ว่า IIS7 ไม่ได้บันทึกเวอร์ชันบีบอัดลงในโฟลเดอร์แคชจริง ๆ แต่จะบันทึกลงในหน่วยความจำเซิร์ฟเวอร์เท่านั้น หรือบันทึกเวอร์ชันบีบอัดลงในโฟลเดอร์แคชชั่วคราวแล้วลบออกหลังจากนั้นครู่หนึ่ง
วิธีการสำหรับ IIS7 เพื่อกำหนดว่าไฟล์ใดที่มีการเข้าถึงบ่อยครั้งและเป็นไปตามมาตรฐานการบีบอัดคือคุณสมบัติสองประการต่อไปนี้ใน system.webServer/serverRuntime, FrequencyHitThreshold และ FrequencyHitTimePeriod หาก IIS ได้รับการเข้าถึงไฟล์แบบคงที่ซึ่งเกินขีดจำกัดของ FrequencyHitThreshold ภายในช่วงความถี่ของ FrequencyHitTimePeriod IIS7 จะบีบอัดไฟล์แบบคงที่เช่น IIS6 และจัดเก็บเวอร์ชันที่บีบอัดไว้ในโฟลเดอร์แคชของไฟล์ที่บีบอัดเป็นเวลานาน หากไฟล์เวอร์ชันแคชมีอยู่แล้วในโฟลเดอร์แคชเมื่อผู้ใช้เข้าถึงไฟล์บนเว็บไซต์ IIS7 จะไม่ตัดสินตรรกะของความถี่บ่อยครั้งHitThreshhold อีกต่อไป และส่งคืนเวอร์ชันบีบอัดไปยังเบราว์เซอร์โดยตรง
การตั้งค่านี้เจ็บปวดมากจริงๆ แต่คำตอบอย่างเป็นทางการของ Microsoft ก็คือสามารถใช้เพื่อปรับปรุงประสิทธิภาพของเซิร์ฟเวอร์ได้ - - ดังนั้นหากคุณต้องการให้ IIS7 สามารถบีบอัดได้เหมือน IIS6 มีสองวิธีแก้ไข แน่นอนว่าทั้งสองวิธีแก้ไขค่าของ FrequencyHitThreshold และ FrequencyHitTimePeriod:
ประการแรกคือการเพิ่มเนื้อหาต่อไปนี้ใน web.config ปรับความถี่ HitThreshold เป็น 1 และปรับความถี่บ่อยครั้งHitTimePeriod เป็น 10 นาที
<system.webServer>
<serverRuntime เปิดใช้งาน=true
ความถี่ HitThreshold บ่อยครั้ง = 1
ความถี่ HitTimePeriod=00:10:00/>
</system.เว็บเซิร์ฟเวอร์>
วิธีที่สองคือเปิด %windir%/system32/inetsrv/appcmd.exe จากนั้นป้อนสตริงคำสั่งต่อไปนี้ในอินเทอร์เฟซบรรทัดคำสั่ง จากนั้นกด Enter
ตั้งค่า config -section:system.webServer/serverRuntime -frequentHitThreshold:1
เจ้าหน้าที่ของ Microsoft แนะนำว่าแนวทางที่รุนแรงน้อยกว่านั้นไม่ใช่การลดความถี่ของ HitThreshold แต่เพื่อเพิ่มความถี่ของความถี่ HitTimePeriod ซึ่งถือว่าปานกลางสำหรับประสิทธิภาพของเซิร์ฟเวอร์ สิ่งที่ฉันต้องการพูดถึงคือสำหรับเพื่อนที่มี VPS แนะนำให้ตั้งค่าด้วยตนเองหรือไม่ ขึ้นอยู่กับผู้ให้บริการ ทุกคนลองดูนะ