Cách thiết lập Apache 2.2.3 để gửi bản sửa đổi cuối cùng của v.v.


9

và để báo cho trình duyệt tải lại một đối tượng (và / hoặc một trang ... mọi thứ trên trang web) chỉ khi được sửa đổi kể từ lần truy cập trước ??? htaccess, httpd.conf ... bạn đã có chỉ thị sẵn sàng cho trường hợp của tôi chưa? Cảm ơn rât nhiều

Câu trả lời:



5

Lưu ý rằng Last-Modifiedcác tiêu đề là các tiêu đề bộ đệm yếu. Các ưu tiên hiện tại là sử dụng Cache-Controlcác tiêu đề.

Google có một bài viết tốt về điều này.

Tối ưu hóa bộ nhớ đệm

Hết hạn và Kiểm soát bộ đệm: tuổi tối đa. Các định nghĩa này xác định thời gian sống mới của một tài nguyên, đó là khoảng thời gian mà trình duyệt có thể sử dụng tài nguyên được lưu trong bộ nhớ cache mà không cần kiểm tra xem có phiên bản mới nào có sẵn từ máy chủ web không. Chúng là "các tiêu đề bộ nhớ đệm mạnh" áp dụng vô điều kiện; nghĩa là, khi chúng được đặt và tài nguyên được tải xuống, trình duyệt sẽ không đưa ra bất kỳ yêu cầu GET nào cho tài nguyên cho đến khi hết hạn sử dụng hoặc tuổi tối đa.

Sửa đổi lần cuối và ETag. Chúng xác định một số đặc điểm về tài nguyên mà trình duyệt kiểm tra để xác định xem các tệp có giống nhau không. Trong tiêu đề Sửa đổi lần cuối, đây luôn là một ngày. Trong tiêu đề ETag, đây có thể là bất kỳ giá trị nào xác định duy nhất một tài nguyên (phiên bản tệp hoặc băm nội dung là điển hình). Last-Modified là một tiêu đề bộ nhớ đệm "yếu" trong đó trình duyệt áp dụng phương pháp phỏng đoán để xác định xem có tìm nạp mục từ bộ đệm hay không. (Các heuristic khác nhau giữa các trình duyệt khác nhau.) Tuy nhiên, các tiêu đề này cho phép trình duyệt cập nhật hiệu quả các tài nguyên được lưu trong bộ nhớ cache của nó bằng cách đưa ra các yêu cầu GET có điều kiện khi người dùng tải lại trang một cách rõ ràng. GET có điều kiện không trả về phản hồi đầy đủ trừ khi tài nguyên đã thay đổi tại máy chủ và do đó có độ trễ thấp hơn so với GET đầy đủ.

Tôi khuyên bạn nên sử dụng một trong hai Cache-Controlhoặc Expirestiêu đề khi cần vì chúng là các tiêu đề bộ đệm mạnh. Một số hệ thống sẽ bỏ qua ngày Sửa đổi lần cuối.

Sau đó, bạn có thể sử dụng một công cụ như curlhoặc http://redbot.org để kiểm tra các tiêu đề.


2
FWIW: "yếu" là thứ mà Google tạo nên. Expireslà một tiêu đề hoàn toàn không phù hợp cho các tài nguyên không hết hạn. Một số tài nguyên có thể được sửa đổi, nhưng không phải vào ngày hết hạn. Quan điểm của Google là Last-Modifiedyêu cầu GET có điều kiện, trong khi Expirescho phép bộ đệm của trình duyệt bỏ qua GET hoàn toàn.
Dancrumb

1
Thuật ngữ yếu chỉ đơn giản là ngữ nghĩa. Vấn đề là việc sử dụng Last-Modifiedcác tiêu đề trong trường hợp không có các hướng dẫn bộ đệm khác sẽ khiến thời gian lưu trữ lên đến máy khách HTTP. Nếu tài nguyên chưa được sửa đổi kể từ Last-Modifiedngày, tài nguyên nên được coi là mới. Ngược lại, khi sử dụng mộtExpires hoặc Cache-Controltiêu đề, nguồn gốc có thể đặt khoảng thời gian mới rõ ràng.
jeffatrackaid

1
"yếu" v "mạnh" được định nghĩa tại tools.ietf.org/html/rfc7232#section-2.1 (Cũng lưu ý đến @Dancrumb)
John Bentley
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.