2009-12-02 27 views
31

Tôi đang sử dụng Yslow làm công cụ đo điểm chuẩn tốc độ đơn giản và tôi bắt gặp một khái niệm rất khó hiểu. E-tagđịnh cấu hình thẻ điện tử

Vì vậy, vấn đề chính là: Làm cách nào để định cấu hình các thẻ E? lớp của tôi trong YSlow nói:

Có 19 thành phần với ETags sai

* http://thehotelinventory.com/media/js/jquery.min.js 
* http://thehotelinventory.com/media/js/jquery.colorbox.min.js 
* http://thehotelinventory.com/media/js/easyslider.min.js 
* http://thehotelinventory.com/media/js/jquery.tools.min.js 
* http://thehotelinventory.com/media/js/custom.min.js 
* http://thehotelinventory.com/media/js/jquery.validate.min.js 
* http://thehotelinventory.com/media/images/colorbox/loading_background.png 
* http://thehotelinventory.com/media/images/productheaderbg.jpg 
* http://thehotelinventory.com/media/images/buttons/field-bg. //etc 

tôi duyệt qua các hướng dẫn developer.yahoo.com về tối ưu hóa trang web nhưng tôi thực sự không thể hiểu được điều với e-thẻ

+2

Bạn có thể sẽ nhận được một câu trả lời tốt hơn nếu bạn đăng những gì bạn có thể thay đổi, chẳng hạn như việc bạn có thể admin máy chủ của bạn và những gì hệ điều hành đó là cũng như những gì nếu có bất kỳ ngôn ngữ lập trình nào bạn đang sử dụng cho trang web. Nếu không có thông tin đó, không ai có thể cho bạn biết cách thay đổi cài đặt và bạn sẽ chỉ nhận được thông tin chung. –

Trả lời

26

This page cho biết cách tắt ETags cho IIS và this page cho biết cách thực hiện nó cho Apache.

+1

Đối với Apache, trước tiên tôi phải bật mod_headers và thực hiện điều này bằng cách chạy lệnh sau đây 'a2enmod headers' – Malachi

+1

Đúng, chỉ thị Tiêu đề là một phần của mod_headers Module để mô-đun cần được bật trước. http://www.askapache.info//2.3/mod/mod_headers.html#header –

+1

Đối với những người trên Apache, AskApache.com đã thay đổi cấu trúc trang web của họ mà không cần thêm bất kỳ chuyển hướng nào. URL mới là: http://www.askapache.com/htaccess/apache-speed-etags/ –

0

thẻ Entity là một tính năng của giao thức HTTP, xem http://www.ietf.org/rfc/rfc2616.txt thẻ

Entity được sử dụng để so sánh hai hay nhiều đơn vị so với cùng tài nguyên được yêu cầu. HTTP/1.1 sử dụng thẻ thực thể trong thẻ ETAG (phần 14.19), If-Match (phần 14.24), If-None-Match (phần 14.26) và Trường tiêu đề If-Range (phần 14.27). Định nghĩa về cách chúng được sử dụng và so sánh như trình xác nhận bộ nhớ cache trong phần 13.3.3. Thẻ thực thể bao gồm chuỗi trích dẫn mờ đục, có thể được thêm tiền tố bởi chỉ báo yếu.

7

Hãy suy nghĩ về thẻ E là một loại băm. Khi một trình duyệt tạo yêu cầu cho một tài nguyên, trình duyệt sẽ gửi cùng với thẻ E của phiên bản tệp mà nó đã lưu vào bộ nhớ cache. Nếu máy chủ quyết định rằng các tệp tương tự nhau (có các phiên bản E-Force "mạnh" và "yếu" để nó không phải lúc nào cũng là một kiểm tra so sánh đơn giản), nó sẽ gửi phản hồi "304 Không được sửa đổi" cho khách hàng, thay vì bản thân tài nguyên. Điều này chuyển thành tăng tốc, vì nó ngăn không cho băng thông bị lãng phí trên các tệp không thay đổi.

Thẻ điện tử được gửi qua tiêu đề HTTP.

Có một ví dụ tốt về E-Thẻ tại nơi làm việc (và cũng có thể làm thế nào để vô hiệu hóa chúng cho Apache) ở đây: http://www.askapache.com/htaccess/apache-speed-etags.html

+0

AskApache.com đã thay đổi cấu trúc trang web của họ mà không cần thêm bất kỳ chuyển hướng nào. URL mới là: http://www.askapache.com/htaccess/apache-speed-etags/ –

3

Đi thẳng đến nguồn, YSlow cung cấp hướng dẫn về tất cả của nó là lời khuyên, bao gồm cách configure ETags.

1

Cách tốt nhất để định cấu hình thẻ ET của bạn là xóa chúng. Đối với các tệp tĩnh, ngày hết hạn trong tương lai xa là cách tiếp cận tốt hơn nhiều.

Cách xóa chúng phụ thuộc vào máy chủ web bạn đang sử dụng. Đối với IIS 7, nó có thể được thực hiện với một HttpModule đơn giản.

+0

Tại sao ngày hết hạn trong tương lai lại là cách tiếp cận tốt hơn? Trong bối cảnh nào? – starbeamrainbowlabs

8

Giả sử bạn đang chạy Apache ...

Bạn có thể thiết lập một ETag đơn giản như thế này:

FileETag MTime Size 

Nếu bạn có nhiều máy chủ, bạn muốn vô hiệu hóa ETags.

FileETag None 

Đặt mã trên trong httpd.conf của bạn (nếu bạn có quyền truy cập), nếu không bạn có thể đặt nó trong .htaccess.

+0

Đặt "FileETag MTime Size" bằng .htaccess không giúp ích gì trong trường hợp của tôi. Nhưng đặt nó trong httpd.conf và khởi động lại Apache đã làm việc tuy nhiên. Dưới đây là một ví dụ chi tiết hơn: https://studio.tellme.com/vxml2/ovw/perf/cache_apache13.html#inode_etags – Haluk

+0

httpd.conf là một giải pháp tốt hơn, nhưng .htaccess sẽ hoạt động tốt nếu bạn có AllowOverride. – philfreo

+0

Tại sao bạn vô hiệu hóa ETags nếu bạn có nhiều máy chủ? Nếu bạn chỉ định cấu hình đầu tiên bạn đề cập đến cho ETags thì số inode sẽ không được xem xét để tạo ETag vì vậy nó sẽ an toàn ngay cả đối với nhiều máy chủ. – dragosb

6

Bằng cách xóa tiêu đề ETAG, bạn tắt bộ nhớ cache và trình duyệt để có thể xác thực tệp, vì vậy chúng buộc phải dựa vào tiêu đề Bộ nhớ cache và Hết hạn của bạn.

Thêm những dòng này để .htaccess:

<ifModule mod_headers.c> 
Header unset ETag 
</ifModule> 
FileETag None 
Các vấn đề liên quan