Tôi đang sử dụng Amazon S3 để cung cấp nội dung tĩnh cho trang web của mình. Tôi muốn trình duyệt lưu trữ các nội dung này càng lâu càng tốt. Tôi nên bao gồm tiêu đề siêu dữ liệu nào với nội dung của mình
Cache-Control: max-age=???
Tôi đang sử dụng Amazon S3 để cung cấp nội dung tĩnh cho trang web của mình. Tôi muốn trình duyệt lưu trữ các nội dung này càng lâu càng tốt. Tôi nên bao gồm tiêu đề siêu dữ liệu nào với nội dung của mình
Cache-Control: max-age=???
Câu trả lời:
Nói chung, một năm được khuyên là giá trị tối đa tiêu chuẩn. Xem RFC 2616 :
Để đánh dấu phản hồi là "không bao giờ hết hạn", máy chủ gốc sẽ gửi Ngày hết hạn khoảng một năm kể từ thời điểm phản hồi được gửi. Máy chủ HTTP / 1.1 KHÔNG NÊN gửi ngày Hết hạn hơn một năm trong tương lai.
Mặc dù điều đó áp dụng cho expires
tiêu chuẩn cũ hơn , nhưng vẫn có ý nghĩa khi áp dụng cache-control
trong trường hợp không có bất kỳ hướng dẫn tiêu chuẩn rõ ràng nào. Miễn là bạn thường cần dù sao và việc chọn bất kỳ giá trị nào dài hơn tùy ý có thể phá vỡ một số tác nhân người dùng. Vì thế:
Cache-Control: max-age=31536000
Cân nhắc không lưu trữ "càng lâu càng tốt", thay vào đó giải quyết càng lâu càng tốt. Ví dụ, không chắc bạn sẽ cần phải lưu trữ nó lâu hơn 10 năm ... tôi nói đúng không?
RFC thảo luận về độ tuổi tối đa tại đây: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.3
Eric Lawrence nói rằng trước IE9, Internet Explorer sẽ coi như cũ bất kỳ tài nguyên nào có giá trị Cache-Control: max-age trên 2147483648 (2 ^ 31) giây, khoảng 68 năm ( http://blogs.msdn.com/b /ie/archive/2010/07/14/caching-improvements-in-internet-explorer-9.aspx ).
Các tác nhân người dùng khác tất nhiên sẽ khác nhau, vì vậy ... hãy thử và chọn một số không chắc (hơn là có khả năng!) Gây tràn. Tuổi tối đa lớn hơn 31536000 (một năm) không có ý nghĩa gì và về mặt thông thường, đây được coi là giá trị tối đa hợp lý.
Những người tạo đề xuất bộ nhớ đệm tối đa 1 năm đã không suy nghĩ thấu đáo.
Trước hết, nếu khách truy cập đang được cung cấp một tệp được lưu trong bộ nhớ cache đã lỗi thời, thì tại sao họ sẽ cung cấp bất kỳ lợi ích nào khi bất ngờ tải phiên bản mới sau 1 năm? Nếu một tệp có TTL 1 năm, từ góc độ chức năng, điều đó rõ ràng có nghĩa là tệp đó không có ý định thay đổi gì cả.
Vậy tại sao người ta cần hơn 1 năm?
1) Tại sao không? Nó không phục vụ bất kỳ mục đích nào để nói với trình duyệt của khách truy cập "này, tệp này đã được 1 năm tuổi, có thể là một ý tưởng để kiểm tra xem nó đã được cập nhật chưa".
2) Dịch vụ CDN. Hầu hết các mạng phân phối nội dung sử dụng tiêu đề bộ nhớ cache để quyết định thời gian phân phát tệp một cách hiệu quả từ máy chủ biên. Nếu bạn có quyền kiểm soát bộ nhớ cache trong 1 năm cho các tệp, tại một thời điểm nào đó, nó sẽ bắt đầu yêu cầu lại các tệp không thay đổi từ máy chủ gốc và bộ đệm cạnh sẽ cần được điền lại hoàn toàn, gây ra tải chậm hơn cho máy khách và không cần thiết các cuộc gọi đến nguồn gốc.
Có ích lợi gì khi có tối đa 1 năm? Những trình duyệt nào sẽ bị nghẹn khi đặt số tiền cao hơn 31536000?