yslow กล่าวว่า etags ได้รับการกำหนดค่าผิดพลาด วิธีการกำหนดค่า etags อย่างถูกต้องใน IIS7?


20

ใช้ ySlow บนเว็บไซต์ที่ฉันสนับสนุนฉันสังเกตว่ามีรายงานว่ามีการกำหนดค่า etags ให้กับรูปภาพของเว็บไซต์ (เช่น * .jpg, * .png, * .gif) ใครช่วยอธิบายสิ่งที่ฉันต้องทำเพื่อรับ IIS7 ออก etags เหล่านี้อย่างถูกต้อง?

คำตอบ:


7

คำตอบที่ยอมรับโดย Farseeker ไม่ทำงาน ฉันได้ทำการทดสอบใน IIS 7.0.6000.16386 บน Windows Server 2008 Standard SP 2 แล้ว

ดูความคิดเห็นเจฟฟ์แอดบนกองมากเกินสำหรับคำถามเดียวกัน


คำตอบนี้ไม่ถูกต้อง / เกี่ยวข้องอีกต่อไป คุณสามารถเปลี่ยน ETags ใน iis 7+ โดยเพิ่มกฎขาออกตามที่เห็นในคำตอบserverfault.com/a/528346/78230
AndrewPK

12

Etags นั้นใช้ได้ตราบใดที่คุณไม่แสดงเนื้อหาจากเซิร์ฟเวอร์หลายเครื่อง หากคุณให้บริการจากเซิร์ฟเวอร์เดียวให้ปล่อยไว้ที่นั่น พวกเขาไม่เจ็บ และหากคุณไม่ต้องการให้ YSlow บ่นเกี่ยวกับพวกเขาให้คลิกที่ปุ่มแก้ไขใกล้กับองค์ประกอบเลือกชุดกฎและแก้ไขโปรไฟล์ YSlow (V2) เพียงยกเลิกการเลือกตัวเลือก "กำหนดค่าแท็กเอนทิตี (Etags)"


7
+1 YSlow บ่นเกี่ยวกับสิ่งต่าง ๆ มากมายไม่ส่งผลกระทบต่อเว็บไซต์ "เพียงมนุษย์" (ไม่ใช่ YSlow ฉันไม่มีและไม่ต้องการ CDN โปรดเลิกส่งเสียงหอนแล้ว)
Gerald Combs

จริงเกี่ยวกับการเปลี่ยนแปลงชุดกฎ
MikeJ

11

YSlow ไม่ได้บ่นว่าพวกเขาผิด (แม้ว่าจะเป็นสิ่งที่พูด) แต่ก็บ่นว่าพวกเขาไม่ต้องการ วิธีเดียวที่จะทำให้ YSlow ปิดการทำงานเกี่ยวกับสิ่งนี้คือปิดใช้งาน

สิ่งที่ดีคือวันนี้ฉันเพิ่งทำสิ่งนี้ด้วยตัวเอง!

เปิดตัวจัดการ IIS ของคุณคลิกบนเซิร์ฟเวอร์และไปที่ส่วนหัวการตอบสนอง HTTP คลิกปุ่ม "เพิ่ม ... " และภายใต้ชื่อให้ป้อน:

ETag

(กรณีที่สำคัญ). ภายใต้ค่าให้ป้อน

""

(นั่นคือคำพูดสองครั้ง)

และ ETags เกิดขึ้น!


ตามที่คนอื่นชี้ให้เห็นคุณควรลบ ETags เฉพาะเมื่อคุณรู้ว่าคุณต้องการ; ในหลายกรณีนี้จะไม่เป็นกรณี
บ๊อบบี้แจ็ค

1
อาจเป็นได้ แต่ข้อเท็จจริงของเรื่องนี้คือคำตอบที่ถูกต้องตอบคำถาม
Mark Henderson

1
คำถามที่ถามว่า 'ฉันจะให้ IIS7 ส่ง etags เหล่านี้ได้อย่างถูกต้องได้อย่างไร' คำตอบของคุณคือหยุดการออก ETags ทั้งหมดซึ่งเป็นผลการดำเนินงานที่เป็นไปได้และอาจไม่จำเป็น (ไม่มีการกล่าวถึงการใช้งาน CDN ในคำถาม)
บ๊อบบี้แจ็ค

2
@ บ๊อบบี้: OP ถามโดยนัยว่า "ฉันจะให้ IIS7 ออก etags เหล่านี้ได้อย่างถูกต้องตามที่ YSlow กำหนดไว้อย่างไร" และการกำหนดค่า "แก้ไข" เพียงอย่างเดียวที่เกี่ยวข้องกับ YSlow คือการปิดใช้งาน
กี

1
@Kip ไม่ส่วนที่แน่นอนเป็นนัยและคุณไม่สามารถเดาได้ แต่สมมติว่า OP เป็นบุคคลที่สมเหตุสมผลเขาอาจต้องการพูดว่า "ตาม YSlow การกำหนดค่าดูเหมือนจะไม่ดีฉันจะทำให้ดีที่สุดได้อย่างไร" - แล้วคำตอบนี้สนุกดี เหมือน "ทำไมการทดสอบหน่วยของฉันถึงบ่น" - "เพียงแค่ลบการทดสอบหน่วยและมันจะไม่บ่นอีกต่อไป!"
chiccodoro


3

ใน iis 6 คุณสามารถเพิ่มหัวข้อที่กำหนดเองสำหรับ 'ETag' = ""

ใน iis 7 ให้เพิ่มกฎการเขียนซ้ำขาออกดังนี้:

<outboundRules>
  <rule name="Remove ETag">
    <match serverVariable="RESPONSE_ETag" pattern=".+" />
    <action type="Rewrite" value="" />
  </rule>
</outboundRules>

IIS 7 จะเขียนทับส่วนหัวที่กำหนดเองและโซลูชันอื่น ๆ ทั้งหมดที่เสนอในคำตอบอื่น ๆ ที่หลากหลายเกี่ยวกับปัญหาเดียวกัน กฎขาออกเป็นรายการเดียวที่ดูเหมือนว่าจะทำงานได้เพราะจะเขียนทับสิ่งใดก็ตามที่ตั้งไว้ก่อนที่จะถูกส่งกลับไปยังผู้ใช้ กฎขาออกที่เสนอนี้ตรงกับตัวแปรเซิร์ฟเวอร์ใด ๆ ที่ตั้งชื่อRESPONSE_ETagตราบใดที่ค่าที่RESPONSE_ETagมีหนึ่งตัวอักษรขึ้นไปและเขียนค่าให้เป็นสตริงว่าง



1

ใช้สิ่งนี้ดีกว่า:

<outboundRules>
  <rule name="Remove ETag">
    <match serverVariable="RESPONSE_ETag" pattern="(.*)\:(.*)" />
    <action type="Rewrite" value="{R:1}" />
  </rule>
</outboundRules>

3
ยินดีต้อนรับสู่ Server Fault! ในขณะที่วิเศษไบต์ดีอย่างแน่นอนมันยอดเยี่ยมสำหรับคนอื่นอ่านถ้าคุณอธิบายว่าทำไมสิ่งนี้ถูกต้อง
Falcon Momot
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.