Sự khác biệt giữa Expires
và Cache-Control
tiêu đề là gì?
Sự khác biệt giữa Expires
và Cache-Control
tiêu đề là gì?
Câu trả lời:
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 Expires
là ngày HTTP trong khi Cache-Control
tuổ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-Control
khi bạn cần kiểm soát nhiều hơn về cách thực hiện bộ đệm.
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.
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:
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.
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 Expires
tiê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-Control
trường có max-age
chỉ thị, người nhận PHẢI bỏ qua Expires
trường đó.
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ệ.
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.
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