Ответ 1
Если вы получаете "x-amz-meta-cachecontrol", вероятно, вы неправильно настраиваете заголовки. Это может быть именно то, как вы это делаете в своем коде. Это должно работать. Я выводя это php, используя класс Amazon S3 PHP?
Попробуйте следующее:
$s3->putObject(file_get_contents($path), $bucket, $url, S3::ACL_PUBLIC_READ, array(), array('Cache-Control' => 'max-age=31536000, public'));
В S3 PHP docs putObjectFile
указан в разделе Legacy Methods:
putObjectFile (string $file,
string $bucket,
string $uri,
[constant $acl = S3::ACL_PRIVATE],
[array $metaHeaders = array()],
[string $contentType = null])
Сравните с этим:
putObject (mixed $input,
string $bucket,
string $uri,
[constant $acl = S3::ACL_PRIVATE],
[array $metaHeaders = array()],
[array $requestHeaders = array()])
Вам нужно установить кеш-контроль как заголовок запрос, но, похоже, нет возможности устанавливать заголовки запросов с putObjectFile
, только мета-заголовками. Вы должны использовать putObject
и дать ему пустой массив для заголовков метаданных, а затем еще один массив с заголовками запросов (включая управление кешем).
Вы также можете попробовать некоторые из других рабочих примеров, которые я привел ниже.
См. также:
Как установить заголовки Expires и Cache-Control для всех объектов в ведро AWS S3 с PHP script (php)
Обновление заголовков кеширования для Amazon S3 и CloudFront (python)
Автоматически установить кеш-контроль для всего ведра S3 (используя политики ведра?)
http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html?r=5225