최근 Amazon S3를 사용하여 내 방문자에게 이미지를 제공하기 시작 했으므로 서버로드가 줄어들었기 때문입니다. 이제 새로운 문제가 있습니다. 오늘 AWS 청구서를 살펴 보았습니다. 나는 나를 기다리고있는 거대한 청구서를 발견했습니다. 20 일 동안 총 4TB의 AWS 데이터 전송이있었습니다.데이터 전송 비용을 어떻게 줄일 수 있습니까? Amazon S3 -> Cloudflare -> 방문자
분명히 이것은 나가는 아마존 S3 트래픽 (클라우드 플레어로가는 방문자에게 보내는 트래픽)이 많기 때문입니다. 이제 CloudFlare의 크롤러가이를 존중할 것이므로 캐시 헤더를 설정하여 요청한 파일의 양을 줄여야합니다. 나는이 같은 내 코드를 수정했습니다 :
$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'));
에, 그것은 작동하지 않습니다. Cache-Control은 헤더에 "Cache-Control"으로 표시되지 않고 "x-amz-meta-cachecontrol"으로 표시되므로 Cloudflare는 캐시를 존중하지 않습니다. Cloudflare는 이것을 무시합니다.
누구나 쉽게 해결할 수 있습니까?
TL; DR : I이 더 많거나 적은이 사람과 같은 문제 : http://support.bucketexplorer.com/topic734.html (즉 2008 년이었다)
편집 : 나는이 우연히 한 : Amazon S3 not caching images하지만 솔루션을하지 않는 불행하게도 나를 위해 일해.
EDIT 2 : 이전 버전의 "Amazon S3 클래스"를 사용했기 때문에 제대로 작동하지 않습니다. 내가 업데이 트와 코드는 지금 작동합니다.
감사합니다.
파일 및 설정 속성을 엽니 다. 나는 "Amazon S3 PHP Class"의 이전 버전을 사용하고있었습니다. 업데이트하고 제안 된 코드를 사용하여 이제 새 파일을 캐시 제어 설정이 있습니다. 큰! 두 번째 링크에서 이미 버킷에있는 파일에 대한 모든 Cache-Control 헤더를 설정합니다. 이렇게하면 내 모든 문제가 해결됩니다. 모든 것에 감사드립니다! –
@Jonas :이 접근법에 따라 데이터 전송을 줄일 수 있었습니까? 그 .. 꽤 오래 .. 알고 있지만 지금 당신 보트에 있습니다. –