Tôi có thể thiết lập một biến đổi Expires hết hạn trong Amazon S3 không?


7

Tôi có rất nhiều tệp trong Amazon S3 (được phân phối qua Cloudfront) mà tôi đã thêm tiêu đề Hết hạn là Mon, Jan 1 2024 11:11:11 GMT

Tuy nhiên, gần đây tôi đã biết rằng việc đặt tiêu đề Hết hạn hơn một năm trong tương lai sẽ vi phạm HTTP 1.1 RFC .

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?

Câu trả lời:


6

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 .


Cảm ơn cho một câu trả lời tuyệt vời. Thêm một câu hỏi nữa: bạn có biết "công khai" là cần thiết trong chỉ thị Kiểm soát bộ đệm hay đó là mặc định? tức làCache-control: public, max-age=3600
DisgruntledGoat

1
Nó không phải là mặc định như vậy, thay vào đó là khả năng lưu trữ phụ thuộc vào ngữ cảnh (ví dụ: mặc định là riêng tư đối với các yêu cầu xác thực HTTP) - các chi tiết hơi phức tạp, xem Bộ nhớ cache là gì? đáp ứng năng bộ nhớ cache , tức là nó là loại ngụ ý trong hầu hết các tình huống, nhưng liên quan đến trường hợp sử dụng của bạn có vẻ như hợp lý để bổ sung nó, trong chừng mực bạn có thể muốn để bộ nhớ cache phản ứng chứng thực cũng như (nếu có) ?!
Steffen Opel

Như thường lệ, tóm tắt trong Tiêu đề HTTP Kiểm soát bộ nhớ cache của Mark Nottingham thực sự dễ dàng hơn nhiều so với những cái đầu tôi nghĩ, xin vui lòng xem giải thích publicvà đặc biệt no-cache, mở rộng về ý nghĩa của cái trước.
Steffen Opel
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.