Vậy có cách nào trong S3 để đặt Hết hạn động luôn luôn là một năm kể từ ngày yêu cầu không?
Không phải tôi biết và tôi nghi ngờ rằng sự hỗ trợ tận tình cho việc này sẽ được xem xét bởi nhóm AWS:
Bạn có thể biết rằng người ta không thể đặt Expires: ...
giá trị động như vậy vì Giá trị duy nhất hợp lệ trong tiêu đề Hết hạn là ngày HTTP; bất cứ điều gì khác rất có thể sẽ được hiểu là "trong quá khứ", do đó việc đại diện là không thể kiểm soát được. (xem ví dụ: Kiểm soát độ mới bằng tiêu đề HTTP hết hạn trong Hướng dẫn bộ đệm tuyệt vời của Mark Nottingham ).
Tuy nhiên, điểm yếu này của Expires: ...
tiêu đề HTTP 1.0 đã được nhận ra và khắc phục trong HTTP 1.1, giới thiệu một lớp tiêu đề mới, tiêu đề phản hồi Kiểm soát bộ đệm, để cung cấp cho các nhà xuất bản Web quyền kiểm soát nhiều hơn đối với nội dung của họ và để giải quyết các hạn chế của Hết hạn. (xem Tiêu đề HTTP kiểm soát bộ đệm ).
Vì vậy, liên quan đến trường hợp sử dụng của bạn (và nói chung), tôi thực sự khuyên bạn nên sử dụng Cache-Control: max-age=...
tiêu đề trong một năm trong tương lai trước và chỉ thêm Expires: ...
để tương thích ngược, nếu có lý do cụ thể để làm như vậy. Tuy nhiên, trong trường hợp này, theo câu hỏi của bạn, bạn thực sự sẽ phải điều chỉnh giá trị một lần để tránh vi phạm HTTP 1.1 RFC, ví dụ: thông qua tập lệnh nhắm mục tiêu API S3 .
Cache-control: public, max-age=3600