Gần đây tôi đã bắt đầu sử dụng Amazon S3 để phục vụ hình ảnh cho khách truy cập của mình vì điều này sẽ làm giảm tải máy chủ. Bây giờ, có một vấn đề mới: Hôm nay tôi nhìn vào hóa đơn AWS của tôi. Tôi nhận thấy rằng tôi có một hóa đơn khổng lồ đang chờ tôi - đã có tổng cộng 4TB chuyển dữ liệu AWS trong 20 ngày.Làm cách nào để giảm chi phí chuyển dữ liệu? Amazon S3 -> Cloudflare -> Visitor
Rõ ràng điều này là do số lượng lưu lượng truy cập Amazon S3 gửi đi cao (đến Cloudflare mà sau đó phục vụ cho khách truy cập). Bây giờ tôi nên giảm số lượng tệp được yêu cầu bằng cách đặt tiêu đề Cache (vì Trình thu thập thông tin của Cloudflare sẽ tôn trọng). Tôi đã sửa đổi mã của tôi như thế này:
$s3->putObjectFile($path, $bucket , 'images/'.$id.'.jpg', S3::ACL_PUBLIC_READ);
để
$s3->putObjectFile($path, $bucket , 'images/'.$id.'.jpg', S3::ACL_PUBLIC_READ, array('Cache-Control' => 'public,max-age=31536000'));
Tuy nhiên, nó không hoạt động. Cloudflare không tôn trọng Cache vì Cache-Control không hiển thị là "Cache-Control" trong Header mà thay vào đó là "x-amz-meta-cachecontrol". Cloudflare bỏ qua điều này.
Có ai có giải pháp dễ dàng cho việc này không?
TL; DR: tôi có nhiều hoặc ít hơn cùng một vấn đề như anh chàng này: http://support.bucketexplorer.com/topic734.html (đó là vào năm 2008)
EDIT: Tôi đã stumbled khi này: Amazon S3 not caching images nhưng tiếc là giải pháp mà không làm việc cho tôi.
CHỈNH SỬA 2: Tắt nó không hoạt động vì tôi đang sử dụng phiên bản cũ của "lớp Amazon S3". Tôi đã cập nhật và mã hoạt động ngay bây giờ.
Cảm ơn bạn đã dành thời gian.
Tôi đã tìm ra lý do tại sao nó không hoạt động. Hóa ra tôi đã sử dụng một phiên bản cũ của "Amazon S3 PHP Class". Tôi đã cập nhật và sử dụng mã được đề xuất của bạn và giờ đây các tệp mới có bộ Bộ nhớ cache. Tuyệt quá! Tôi cũng sẽ xem xét liên kết thứ hai của bạn để đặt tất cả các tiêu đề Bộ nhớ cache-Kiểm soát cho các tệp đã có trong nhóm. Điều này sẽ giải quyết mọi vấn đề của tôi. Cám ơn vì tất cả! –
@Jonas: Bạn có thể giảm chuyển dữ liệu của mình theo cách tiếp cận này không? .. Tôi biết nó khá dài .. nhưng bây giờ tôi đang ở trong thuyền của bạn. –