yslow nói etags bị cấu hình sai. Làm cách nào để cấu hình etags đúng cách trên IIS7?


20

chạy ySlow trên một trang web tôi hỗ trợ, tôi nhận thấy nó báo cáo rằng các etags bị định cấu hình sai cho hình ảnh trang web (ví dụ * .jpg, * .png, * .gif). Bất cứ ai có thể giúp giải thích những gì tôi phải làm để yêu cầu IIS7 phát hành các etags này một cách chính xác?

Câu trả lời:


7

Câu trả lời được chấp nhận bởi Farseeker không hoạt động. Tôi đã thử nghiệm điều này trong IIS 7.0.6000.16386 trên Windows Server 2008 Standard SP 2.

Xem bình luận của Jeff Atwood về Stack Overflow cho cùng một câu hỏi .


Câu trả lời này không còn đúng / có liên quan. Bạn có thể thay đổi ETags trong iis 7+ bằng cách thêm quy tắc ra ngoài như trong câu trả lời của tôi serverfault.com/a/528346/78230
AndrewPK

12

Etags vẫn ổn miễn là bạn không phục vụ nội dung từ nhiều máy chủ. Nếu bạn chỉ phục vụ từ một máy chủ, thì hãy để chúng ở đó. Họ không đau. Và nếu bạn không muốn YSlow phàn nàn về chúng, thì hãy nhấp vào nút Chỉnh sửa gần phần tử chọn Rulesets và chỉnh sửa cấu hình YSlow (V2). Chỉ cần bỏ chọn tùy chọn "Cấu hình thẻ thực thể (Etags)".


7
+1 YSlow phàn nàn về rất nhiều điều không ảnh hưởng đến các trang web "đơn thuần". (Không có YSlow, tôi không có và không cần CDN. Vui lòng bỏ than vãn.)
Gerald Combs

Đúng về thay đổi bộ quy tắc.
MikeJ

11

YSlow không phàn nàn rằng họ sai (mặc dù đó là những gì nó nói), nhưng nó phàn nàn rằng họ không cần thiết. Cách duy nhất để khiến YSlow im lặng về việc này là vô hiệu hóa chúng.

Điều tốt là, tôi vừa mới làm điều này sớm hơn ngày hôm nay!

Mở trình quản lý IIS của bạn, nhấp vào máy chủ và đi đến Tiêu đề phản hồi HTTP. Nhấp vào nút "Thêm ..." và dưới tên, nhập:

ETag

(trường hợp nhạy cảm). Trong Giá trị, nhập

""

(đó là hai dấu ngoặc kép)

Và ETags bắt đầu!


Như những người khác chỉ ra, bạn chỉ nên xóa ETags nếu bạn biết bạn cần phải làm vậy; trong nhiều trường hợp, đây sẽ không phải là trường hợp.
Bobby Jack

1
Đó có thể là trường hợp, nhưng thực tế của vấn đề là câu trả lời trả lời đúng câu hỏi.
Mark Henderson

1
Câu hỏi được hỏi 'làm cách nào để IIS7 phát hành các etags này một cách chính xác?'. Câu trả lời của bạn là ngừng phát hành ETags hoàn toàn, đây là một điểm nhấn hiệu suất có thể và có thể không cần thiết (không có đề cập đến việc sử dụng CDN trong câu hỏi).
Bobby Jack

2
@ BOB: OP đang ngầm hỏi "làm cách nào để IIS7 phát hành các etags này một cách chính xác theo định nghĩa của YSlow ?". và cấu hình "chính xác" duy nhất, theo như YSlow có liên quan, là vô hiệu hóa chúng.
Kip

1
@Kip, không, phần ẩn là ẩn và bạn không thể đoán nó. Nhưng giả sử rằng OP là một người hợp lý, có lẽ anh ta muốn nói "theo YSlow, cấu hình dường như là tối ưu, làm thế nào tôi có thể làm cho nó tối ưu?" - Và sau đó câu trả lời này là một chút buồn cười. Nó giống như "tại sao bài kiểm tra đơn vị của tôi phàn nàn?" - "Chỉ cần xóa bài kiểm tra đơn vị, và nó sẽ không phàn nàn nữa!"
chiccodoro


3

Trong iis 6, bạn có thể thêm tiêu đề tùy chỉnh cho 'ETag' = ""

Trong iis 7, thêm quy tắc viết lại bên ngoài như sau:

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

IIS 7 sẽ ghi đè lên các tiêu đề tùy chỉnh và tất cả các giải pháp khác được đề xuất trong nhiều câu trả lời khác liên quan đến cùng một vấn đề. Các quy tắc bên ngoài là mục duy nhất có vẻ hoạt động vì nó ghi đè lên bất cứ thứ gì được đặt ngay trước khi trả lại cho người dùng. Quy tắc ra bên ngoài được đề xuất này khớp với bất kỳ biến máy chủ nào có tên RESPONSE_ETagmiễn là giá trị của RESPONSE_ETagcó một hoặc nhiều ký tự và viết lại giá trị thành một chuỗi rỗng.



1

Sử dụng tốt hơn thế này:

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

3
Chào mừng bạn đến với Lỗi Máy chủ! Mặc dù các byte ma thuật chắc chắn rất tuyệt, nhưng thật tuyệt vời cho những người khác đọc nó nếu bạn giải thích tại sao điều này là chính xác.
Falcon Momot
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.