Theo như tôi biết, tất cả các CDN hoạt động như thế này.
Đó là lý do tại sao bạn thường sử dụng một cái gì đó như foo-x.y.z.ext
cho nội dung phiên bản trên CDN. Tôi sẽ không sử dụng foo.ext?x.y.z
vì có điều gì đó về một số trình duyệt và proxy nhất định không bao giờ lưu vào bộ nhớ đệm bằng một số ?QUERY_STRING
.
Nói chung bạn có thể muốn kiểm tra này: https://developers.google.com/speed/docs/best-practices/caching
Nó chứa rất nhiều thực hành tốt nhất và đi sâu vào chi tiết phải làm gì và làm thế nào nó hoạt động.
Đối với S3 và Cloudfront, tôi không phải là siêu quen thuộc với việc không hợp lệ bộ nhớ cache, nhưng những gì Frederick Cheung đã đề cập là chính xác.
Một số nhà cung cấp cũng cho phép bạn xóa bộ nhớ cache trực tiếp nhưng vì bản chất của CDN, những thay đổi này gần như không bao giờ tức thời. Phương pháp khác là đặt TTL nhỏ hơn (tiêu đề hết hạn) để nội dung sẽ được làm mới thường xuyên hơn. Nhưng tôi nghĩ rằng đánh bại mục đích của một CDN là tốt.
Trong trường hợp của chúng tôi (Edgecast), việc vô hiệu hóa bộ nhớ cache là có thể (một quy trình thủ công) và miễn phí, nhưng chúng tôi hiếm khi làm điều này bởi vì chúng tôi phiên bản tài sản của mình cho phù hợp.
Tôi đã có một cảm giác khủng khiếp trong trường hợp này. Có vẻ như họ đã bỏ lỡ một tính năng. Bạn có thể cung cấp một tham chiếu cho điều đó hay nó chỉ không được chỉ định? Cảm ơn. – Joe
Nó sẽ là một giả định bị lỗi khi tải lên phiên bản mới lên S3 có nghĩa là bạn muốn xóa bộ nhớ cache trong CloudFront. Có, đây có thể là hành vi mà bạn đang tìm kiếm, nhưng nó sẽ là giả định của AWS để _assume_ rằng đây là những gì bạn muốn. Trong nhiều trường hợp, tôi sẽ lưu trữ nội dung trong CloudFront khi biết rằng nó sẽ hết hạn theo cài đặt của tôi và sẽ hiển thị nội dung cập nhật trong S3 trước thời hạn. Trong trường hợp của tôi, và vô hiệu hóa tự động là trái ngược với những gì tôi muốn. –
Không giả định, nhưng nó có vẻ giống như một tham số hữu ích đã có. – Joe