sự khác biệt giữa các tiêu đề hết hạn và kiểm soát bộ đệm?


Câu trả lời:


130

Cache-Controlđã được giới thiệu trong HTTP / 1.1 và cung cấp nhiều tùy chọn hơn Expires. Chúng có thể được sử dụng để thực hiện điều tương tự nhưng giá trị dữ liệu cho Expireslà ngày HTTP trong khi Cache-Controltuổi tối đa cho phép bạn chỉ định một lượng thời gian tương đối để bạn có thể chỉ định "X giờ sau khi trang được yêu cầu".

Kiểm soát bộ đệm HTML là một câu hỏi rất giống nhau và có một liên kết tốt đến một hướng dẫn bộ đệm sẽ trả lời hầu hết các câu hỏi của bạn (ví dụ: http://www.mnot.net/cache_docs/#EXPIRES ). Tóm lại, Expiresđược khuyến nghị cho các tài nguyên tĩnh như hình ảnh và Cache-Controlkhi bạn cần kiểm soát nhiều hơn về cách thực hiện bộ đệm.


8
Đáng để nhận xét rằng kiểm soát bộ đệm là những gì tất cả các trình duyệt sẽ sử dụng, nhưng thật hữu ích khi chỉ định cả hai tiêu đề trong trường hợp có các proxy cũ theo cách này.
Nacho Coloma

3
Sử dụng dịch vụ redbot.org (cũng bởi Mark Nottingham , người đã viết bài viết về bộ nhớ đệm được tham chiếu trong câu trả lời ở trên) để kiểm tra việc sử dụng chính xác các tiêu đề bộ đệm.
daxim

35
Hơn nữa: "Khi có cả Kiểm soát bộ đệm và Hết hạn, Kiểm soát bộ đệm được ưu tiên." - mnot.net/cache_docs/
KFunk

35

Nếu bạn đang sử dụng CDN (Mạng phân phối đám mây), tôi khuyên bạn nên sử dụng Kiểm soát bộ đệm với thời gian tối đa tính bằng giây. Ví dụ: Kiểm soát bộ đệm: max-age = 604800. Điều này ngăn các đỉnh yêu cầu đến máy chủ gốc của bạn: Với "Hết hạn thứ tư, ngày 30 tháng 10 năm 20xx 04:37:07 GMT" tất cả các trình duyệt sẽ yêu cầu bạn cùng một lúc.


22
Apache (và có lẽ nhiều máy chủ) thường đặt ngày hết hạn bằng cách sử dụng thời gian mà tệp được yêu cầu + thời gian chờ bạn chỉ định. Vì ngày này đang sử dụng giây, kịch bản của bạn rất khó xảy ra và hành vi cũng giống như vậy cache-control. Vì vậy, tôi không thấy lý do tại sao sẽ có các yêu cầu cao điểm khi sử dụngExpires:
hilas

19

Theo bài viết này của Google Developers, HTTP Cacheing :

Tiêu đề điều khiển bộ đệm được định nghĩa là một phần của đặc tả HTTP / 1.1 và thay thế các tiêu đề trước đó (ví dụ: Hết hạn) được sử dụng để xác định các chính sách bộ đệm phản hồi. Tất cả các trình duyệt hiện đại đều hỗ trợ Cache-Control, do đó đó là tất cả những gì chúng ta sẽ cần.


Không chỉ tất cả các trình duyệt hiện đại đều hỗ trợ nó - chúng cũng nên như trong thông số: "Nếu một phản hồi bao gồm cả tiêu đề Hết hạn và chỉ thị tuổi tối đa, chỉ thị tuổi tối đa sẽ ghi đè tiêu đề Hết hạn, ngay cả khi Hết hạn tiêu đề hạn chế hơn "[ w3.org/Prot Protocol / rfc2616 / rfc2616-sec14.html]
rosell.dk

8

Kiểm soát bộ đệm được xác định trong HTTP / 1.1, cho tất cả các cơ chế bộ đệm từ máy chủ đến máy khách xem chúng có thể lưu trữ đối tượng này không. Nó được đo bằng giây : Cache-Control: max-age=3600.

Trường Expirestiêu đề đưa ra ngày / thời gian sau đó phản hồi được coi là cũ. Giá trị Hết hạn là dấu thời gian ngày HTTP : Expires: Tue, 18 Jul 2017 16:07:23 GMT.

Nếu một phản hồi bao gồm một Cache-Controltrường có max-agechỉ thị, người nhận PHẢI bỏ qua Expirestrường đó.


4

Heroku devcenter có một bài viết tuyệt vời về chủ đề này.

Trích dẫn từ nó,

Trong khi tiêu đề Bộ điều khiển bộ đệm bật bộ đệm ẩn phía máy khách và đặt tuổi tối đa của tài nguyên, tiêu đề Hết hạn được sử dụng để chỉ định một thời điểm cụ thể mà tài nguyên không còn hợp lệ.


0

Ngoại trừ các tùy chọn riêng tư / công khai của CC, tôi không thể thấy bất kỳ sự khác biệt nào. Khi sử dụng Hết hạn như "truy cập cộng 1 năm / tháng / tuần / ngày", nó hoạt động chính xác giống như CC.


Bạn có quan tâm để giải thích downvote? Tôi đã thực hiện một số thử nghiệm rộng rãi trong Chrome, Safari và Firefox. Kiểm soát bộ đệm có một số tùy chọn không khả dụng khi sử dụng hết hạn, nhưng cho tất cả các mục đích thực tế, cả hai đều hoạt động theo cùng một cách.
Rob

-1

Nếu bạn vẫn quan tâm, tôi để lại đề xuất này trực tiếp từ các chàng trai của google. https://developers.google.com/speed/docs/insights/LeverageBrowserCaching Họ thích Hết hạn trước hơn Kiểm soát bộ nhớ cache


Bạn có chắc chắn họ thích Hết hạn hơn Kiểm soát bộ đệm? Tôi đọc ghi đè là cách khác, ít nhất là cho Firefox. developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Expires
Ecker00

Hiện tại, trang đó có đề cập "Không dùng nữa. Trang này được viết cho phiên bản 4 của API PageSpeed ​​Insights, không dùng nữa và sẽ ngừng hoạt động vào tháng 5 năm 2019. Phiên bản 5 là phiên bản mới nhất và cung cấp cả dữ liệu trong thế giới thực từ Trải nghiệm người dùng Chrome Báo cáo và dữ liệu phòng thí nghiệm từ Hải đăng. "
Joool Schulenklopper
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.