Недавно я начал использовать Amazon S3 для обслуживания изображений для моих посетителей, так как это уменьшит нагрузку на сервер. Теперь есть новая проблема: сегодня я заглянул в свои счета AWS. Я заметил, что у меня есть огромный счет, ожидающий меня - в течение 20 дней было всего 4TB AWS Data Transfer.
Очевидно, это связано с тем, что большое количество исходящего трафика Amazon S3 (до Cloudflare, который затем служит для посетителей). Теперь я должен уменьшить количество запрошенных файлов, установив заголовок Cache (так как Cloudflare Crawler соблюдает это). Я изменил свой код следующим образом:
$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'));
Тем не менее, это не сработает. Cloudflare не уважает кэш, потому что Cache-Control не отображается как "Cache-Control" в заголовке, а вместо этого "x-amz-meta-cachecontrol". Cloudflare игнорирует это.
У кого-нибудь есть простое решение для этого?
TL; DR: У меня более или менее та же проблема, что и у этого парня: http://support.bucketexplorer.com/topic734.html ( это было в 2008 году)
EDIT: Я наткнулся на это: Amazon S3 не кэширует изображения, но, к сожалению, это решение не работает для меня.
EDIT 2: Оказывается, это не сработало, потому что я использовал старую версию класса Amazon S3. Я обновился, и код работает сейчас.
Спасибо за ваше время.