Khi nào nên sử dụng và không sử dụng ETags


9

Tôi chỉ xem trang web của chúng tôi trên WebPageTest.org và một trong những khuyến nghị của họ để tăng tốc trang web là:

Tiêu đề ETag thường không nên được sử dụng trừ khi bạn có lý do rõ ràng để cần chúng

Tôi đã tự hỏi điều này có nghĩa là gì. Liệu nó có nghĩa là nội dung tĩnh bạn biết sẽ không thay đổi không nên có họ, hoặc dùng nó nội dung trung bình bạn biết sẽ được thay đổi thường xuyên không nên có họ, hoặc không có nghĩa là bạn không nên sử dụng chúng thường trừ khi bạn có một nhu cầu cụ thể.

Nếu đó là sau này, khi nào là thời điểm thích hợp để sử dụng chúng? Cảm ơn vì bất kì sự giúp đỡ.

Câu trả lời:


8

ETags là một thay thế cho (nhưng có thể được sử dụng kết hợp với) "Thời gian sửa đổi lần cuối" để xác định xác thực bộ đệm.

Khách hàng có thể gửi một điều kiện trước như if-trận đấu hoặc if-none-khớp dựa trên ETag. Đây không chỉ dành cho các yêu cầu GET (đó là những gì webpagetest.org làm) mà bạn có thể sử dụng "cập nhật cơ hội" để yêu cầu PUT có điều kiện trước và sẽ không thực hiện thao tác cập nhật nếu tài nguyên đã được cập nhật kể từ khi ETag được cuối cùng có được.

Nói một cách đơn giản: bạn nhấn chỉnh sửa trên một trang trong CMS của bạn, bạn bè của bạn nhấn chỉnh sửa trên một trang trong CMS của bạn, bạn của bạn thực hiện chỉnh sửa và lưu lần truy cập và cuối cùng bạn nhấn lưu - không cần tiêu đề HTTP ETag hoặc Content-MD5 bạn cần để phát minh lại bánh xe để ngăn chặn các sự cố xảy ra (chẳng hạn như bạn xóa sạch các thay đổi của bạn bè), giải pháp đã là một phần của giao thức HTTP và do đó, thật hợp lý khi chỉ sử dụng nó.

Nói chung, tôi đồng ý với AOL (người điều hành webpagetest.org) về lời khuyên "một kích thước phù hợp với tất cả" của họ - tốt hơn là không làm tắc nghẽn các tiêu đề HTTP bằng chuỗi mật mã (ETags thường không đẹp hoặc có thể đọc được) khi khác biệt ( mà Thời gian sửa đổi lần cuối có thể phát hiện) sẽ thực hiện cho công việc trong tay.

Nếu một trang đang được cập nhật nhiều lần trong một giây và bạn hoàn toàn cần phiên bản chính xác nhất mới nhất được hiển thị, bạn có thể muốn thử nghiệm các giải pháp khác ngoài HTTP GET hoặc chỉ sử dụng ETags.

Hãy cẩn thận rằng các ETags của bạn không bao gồm mỗi hệ thống tệp, mỗi thay đổi cấu hình máy chủ, v.v. (chẳng hạn như các nút được mặc định trên Apache) nếu không bạn sẽ gặp sự cố khi có hai máy chủ (các ETags từ mỗi máy chủ sẽ không khớp).


Vậy là được rồi. Có một ví dụ mà tôi không chắc chắn: nếu bạn có nhiều phiên bản nội dung trên một URI (chẳng hạn như phiên bản trên thiết bị di động hoặc Internet Explorer), có thể sử dụng ETags để tìm kiếm thông qua MỌI phiên bản cho một trận đấu (do đó nó được gọi là if- không khớp nào nếu không khớp) - tùy thuộc vào người bạn hỏi có những câu trả lời khác nhau (chẳng hạn như không có một URI vĩnh viễn cho một số đại diện, v.v.).
Metalshark

7

Để diễn giải đánh giá xuất sắc của Coding Horror về plugin YSlow Fireorms (có vẻ như WebPageTest.org đang sử dụng làm cơ sở cho đánh giá của họ):

"Yahoo là một trong những trang web bận rộn nhất thế giới - vấn đề của nó có lẽ không phải là vấn đề của bạn."

Nếu bạn không giao dịch hàng triệu lượt truy cập trên mạng cân bằng tải mỗi ngày, rất có thể các đề xuất được cung cấp không phải là tất cả các lựa chọn đúng khi tối ưu hóa trang web của bạn.


Tôi đánh giá cao nhận xét, nhưng bạn đã sai. Steve Sounders giải thích ở đây: stevesouders.com/blog/2010/09/07/webpagetest-org-and-page-speed (Ông là người đề xuất lớn các cải tiến hữu ích - tức là không chỉ các cải tiến sẽ hoạt động cho Google.) Trang web của chúng tôi là chắc chắn đủ lớn để cảm thấy sự gia tăng tốc độ từ những cải tiến như vậy (và đã có).
Django Reinhardt

2
Phần mở rộng firebird yslow hiện bao gồm một thử nghiệm cho các trang web nhỏ hơn, thực tế hơn cho hầu hết các trang web.
John Conde

1
@Django Reinhardt - Tôi đã điều chỉnh lại câu trả lời của mình, đúng là nhiều đề xuất có giá trị cho bất kỳ trang web nào, nhưng đặc biệt là ETags gây tranh cãi bởi vì, trong trường hợp của Y, tính năng này mâu thuẫn với cân bằng tải
danlefree

Liên kết bạn cung cấp, có một liên kết đến mô tả về ETags của Yahoo ( developer.yahoo.com/performance/rules.html#etags ) để trả lời các câu hỏi của tôi một cách độc đáo. (Vâng, có lẽ sẽ tốt hơn nếu chúng tôi không phục vụ ETags.) Cảm ơn.
Django Reinhardt

1
@Django: Nếu bạn có nhiều máy chủ thì ETags có thể là một vấn đề. Tuy nhiên, miễn là cùng một tệp luôn trả về cùng một ETag thì điều đó hoàn toàn ổn. Xem thêm: webmasters.stackexchange.com/questions/1459/ từ
DisgruntledGoat
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.