ต้องการความช่วยเหลือเกี่ยวกับการตั้งค่าการบีบอัด IIS7 web.config


9

ฉันกำลังพยายามกำหนดการตั้งค่าการบีบอัด IIS7 ในไฟล์ web.config ของฉัน ฉันพยายามเปิดใช้งานคำขอ HTTP 1.0 ให้เป็น gzip

MSDN มีข้อมูลทั้งหมดที่เกี่ยวกับเรื่องนี้ที่นี่

เป็นไปได้หรือไม่ที่จะมีข้อมูลการกำหนดค่านี้ในไฟล์ web.config ของเว็บไซต์ของฉันเอง? หรือฉันจำเป็นต้องตั้งไว้ที่ระดับแอปพลิเคชัน? ขณะนี้ฉันมีรหัสนั้นใน web.config ...

<system.webServer>
    <urlCompression 
        doDynamicCompression="true" 
        dynamicCompressionBeforeCache="true" />
    <httpCompression 
        cacheControlHeader="max-age=86400" 
        noCompressionForHttp10="False" 
        noCompressionForProxies="False" 
        sendCacheHeaders="true" />

    ... other stuff snipped ...

</system.webServer>

มันไม่ทำงาน :( คำขอ HTTP 1.1 กำลังถูกบีบอัด แต่ไม่ใช่ 1.0

หน้า MSDN ข้างต้นบอกว่าสามารถใช้ใน: -

  • Machine.config
  • ApplicationHost.config
  • รูทแอปพลิเคชั่น Web.config
  • Application Web.config
  • ไดเรกทอรี Web.config

ดังนั้นเราสามารถตั้งค่าเหล่านี้เป็นแบบต่อเว็บไซต์โดยทางโปรแกรมในไฟล์ web.config ได้หรือไม่? (นี่เป็นไฟล์ Application Web.config ... ) ฉันทำอะไรผิดไป

ไชโย :)

แก้ไข: ฉันถูกถามว่าฉันรู้ได้อย่างไรว่า HTTP1.0 ไม่ได้รับการบีบอัด ฉันกำลังใช้กฎการติดตามคำขอที่ล้มเหลวซึ่งรายงานกลับมา: -

DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
    Reason: 3
    Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END

คำตอบ:


3

ใส่ใจกับความจริงที่ว่าการตั้งค่า IIS 7.x web.config ของ

noCompressionForProxies="false"

ไม่ได้รับเกียรติในระดับ web.config จะต้องตั้งค่าใน C: \ Windows \ System32 \ inetsrv \ config \ ApplicationHost.config ดังนี้:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" noCompressionForProxies="False">

ตรวจสอบให้แน่ใจและทำการตั้งค่า IIS ใหม่หลังจากเปลี่ยนการตั้งค่า

คำขอถูกกำหนดให้มาจากพร็อกซีโดย IIS หากคำขอเว็บของลูกค้ามีส่วนหัว HTTP "Via" ดังนี้:

Via: 1.1 foo

คุณยังสามารถใช้appcmdเพื่อตั้งค่าระดับแอปพลิเคชัน (ซึ่งอาจจะง่ายกว่า)
Pure.Krome

2

หลังจากทำการวิจัยอย่างเป็นธรรมมันจะ 'ล็อค' โดยค่าเริ่มต้นที่ระดับแอปพลิเคชัน ดังนั้นจึงจำเป็นต้อง 'ปลดล็อค' สามารถทำได้ผ่านทางบรรทัดคำสั่งหรือผ่านทางเครื่องมือการดูแลระบบ iis7

เช่น. appcmd set config -section:urlCompression /doDynamicCompression:true

refrences:


1

คุณจะทดสอบว่าการร้องขอ HTTP1.0 ไม่ถูกบีบอัดได้อย่างไร เป็นไปได้ไหมที่ไคลเอนต์ที่คุณใช้ไม่ได้บอกเซิร์ฟเวอร์ว่าสามารถรับการตอบกลับที่ถูกบีบอัดได้

หากคุณสามารถเห็นส่วนหัวที่ส่งโดยลูกค้า (นำเสนอโดยลูกค้าทดสอบตัวเองโดยใช้ Firebug หรือคล้ายกันถ้าคุณกำลังทดสอบใน Firefox หรือ IEHTTPHeaders ถ้าคุณกำลังทดสอบใน IE หรือโดยการดมการจราจรโดยใช้เครื่องมือภายนอก) คุณควร ดูบางสิ่งที่ชอบ

Accept-Encoding: compress, gzip, deflate

ในนั้นบางแห่ง หากไคลเอ็นต์ไม่แจ้งเซิร์ฟเวอร์ว่าสามารถรับการตอบกลับที่บีบอัดได้เซิร์ฟเวอร์จะไม่ส่งการตอบกลับใด ๆ ไม่ว่าการตั้งค่าอื่นใดที่คุณมีฝั่งเซิร์ฟเวอร์

ปัญหาอื่นอาจเกิดขึ้นถ้าคุณกำลังทดสอบผ่านพร็อกซีเซิร์ฟเวอร์ที่ระบุว่าเป็นของตนเอง ในกรณีนี้การตั้งค่า noCompressionForProxies อาจมีความสำคัญกว่าและปิดกั้นความเป็นไปได้ของการตอบสนองที่ถูกบีบอัด

สิ่งหนึ่งที่ควรทราบคือไคลเอนต์และพรอกซีบางตัวที่ส่งการร้องขอ HTTP1.0 (โดยปกติจะเป็นซอฟต์แวร์ที่เก่ากว่า) จะไม่สามารถตอบสนองการบีบอัดได้อย่างถูกต้องถ้าพวกเขาได้รับดังนั้นถ้าคุณเปิดใช้งานการบีบอัดสำหรับการตอบสนองต่อคำขอ HTTP1.0 ทดสอบไซต์ / แอปพลิเคชันของคุณในซอฟต์แวร์ไคลเอ็นต์ / พร็อกซีทั้งหมดที่คุณคาดหวังว่าผู้เยี่ยมชม / ผู้ใช้จะใช้ นี่เป็นปัญหาน้อยกว่าถ้าคุณสามารถรับประกันว่ากลุ่มเป้าหมายของคุณจะใช้ซอฟต์แวร์บางอย่าง (ถ้าเช่นแอพนี้มีไว้สำหรับเครือข่ายภายในองค์กรเท่านั้น) แต่อย่างอื่นมีชุดค่าผสมมากมายให้ทดสอบซึ่งเป็นสาเหตุที่เซิร์ฟเวอร์ส่วนใหญ่ปิดใช้งานการบีบอัด 1.0 คำขอทั้งหมด


ผมทดสอบว่าคำขอ HTTP1.0 จะไม่ได้รับการบีบอัดโดยใช้การร้องขอที่ล้มเหลวติดตามหลักเกณฑ์ซึ่งรายงานกลับ - DYNAMIC_COMPRESSION_START DYNAMIC_COMPRESSION_NOT_SUCESS เหตุผล: 3 เหตุผล: NO_COMPRESSION_10 DYNAMIC_COMPRESSION_END
Pure.Krome
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.