Tôi sử dụng SDK Amazon cho PHP và cố gắng đặt Tiêu đề kiểm soát bộ nhớ cache trên hình ảnh. Khi tôi cố gắng thêm nó thông qua MetaData = array ("Cache-Control") nó thay đổi nó thành x-amz-meta-cache-control khi tôi đăng nhập vào thùng S3, và khi tôi tải xuống tệp, không có Cache - bộ kiểm soát. Nhưng nếu tôi thay đổi cài đặt này theo cách thủ công, Cache-control hoạt động hoàn hảo. Có một số thông số tôi thiếu mà tôi có thể sử dụng để đặt Tiêu đề yêu cầu HTTP theo chương trình khi tải lên không? Tôi đang sử dụng phương pháp PutObject. Tôi tin rằng AWS SDK là từ năm 2013.Đặt tiêu đề HTTP bộ nhớ cache kiểm soát đối tượng S3 từ SDK AWS PHP
Trả lời
Điều khiển bộ nhớ cache không được đặt qua chỉ mục "MetaData", "CacheControl" có cùng cấp với "MetaData", không được chứa trong đó.
http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.S3.S3Client.html#_putObject
Bạn muốn sử dụng một cái gì đó như thế này là mảng cấu hình của bạn đối với phương pháp putObject() ...
$s3client->putObject(array(
'Bucket' => '...',
'key' => '...',
'body' => '...',
'CacheControl' => 'max-age=172800',
'MetaData' => array(
'metaKey' => 'metaValue',
'metaKey' => 'metaValue'
)));
Đối với phương pháp tải lên() ...
$s3client->upload(
'bucket',
'key',
fopen('sourcefile','r'),
'public-read',
array('params' => array(
'CacheControl' => 'max-age=172800',
'Metadata' => array(
'metaKey' => 'metaValue',
'metaKey' => 'metaValue'
))));
Ngoài ra, điều đáng chú ý là upload()
sẽ quấn putObject()
cho các tệp có kích thước 5MB, nếu không, tệp sẽ bắt đầu yêu cầu tải lên nhiều phần.
Nếu bạn muốn thêm tiêu đề CacheControl
vào một mục đã có trong nhóm của bạn, hãy sử dụng phương thức copyObject
của SDK. Đặt thông số MetadataDirective
để THAY THẾ để làm cho mục ghi đè chính nó.
Tôi nhận thấy một điều kỳ lạ: tôi cũng phải đặt tiêu đề ContentType
, mặc dù nó đã được đặt. Nếu không, hình ảnh sẽ không hiển thị nội tuyến trong trình duyệt nhưng được cung cấp dưới dạng tải xuống.
$result = $s3->copyObject(array(
'ACL' => 'public-read',
'Bucket' => $bucket, // target bucket
'CacheControl' => 'public, max-age=86400',
'ContentType' => 'image/jpeg', // !!
'CopySource' => urlencode($bucket . '/' . $key),
'Key' => $key, // target file name
'MetadataDirective' => 'REPLACE'
));
- 1. Đặt tiêu đề kiểm soát bộ nhớ cache HTTP trong dịch vụ WCF
- 2. Đặt tiêu đề hết hạn cho đối tượng S3 hiện có bằng AWS Java SDK
- 3. Giá trị tối đa cho tiêu đề kiểm soát bộ nhớ cache trong HTTP
- 4. Tiêu đề HTTP: Kiểm soát bộ nhớ cache đủ hay tôi vẫn cần hết hạn?
- 5. AlamoFire Bỏ qua tiêu đề kiểm soát bộ nhớ cache
- 6. Tiêu đề HTTP: Kiểm soát bộ nhớ cache và cơ chế lịch sử
- 7. HTTP 304 Not Modified-response có chứa tiêu đề kiểm soát bộ nhớ cache không?
- 8. Tiêu đề kiểm soát bộ nhớ cache được sửa đổi theo phiên PHP?
- 9. Làm thế nào để đặt tiêu đề kiểm soát bộ nhớ cache Varnish
- 10. Google App Engine - tiêu đề [] và tiêu đề.add_header() để kiểm soát bộ nhớ cache
- 11. Điều kiện đặt tiêu đề bộ nhớ cache trong apache
- 12. Kiểm soát hết hạn bộ nhớ cache
- 13. Tiêu đề Bộ nhớ cache-Kiểm soát trong tệp firebase.json không hoạt động
- 14. Tiêu đề Bộ nhớ cache kiểm soát lặp lại; hợp lệ hay không? (Nginx)
- 15. mod_expires gửi tiêu đề Bộ nhớ cache kiểm soát cho 3 ## mã trạng thái
- 16. Cách chính xác để đặt và kiểm tra tiêu đề kiểm soát bộ nhớ cache là gì?
- 17. Đầu đề kiểm soát bộ nhớ cache trên đám mây bị thiếu
- 18. Cách sử dụng tiêu đề bộ nhớ cache HTTP với PHP
- 19. Thêm tiêu đề Hết hạn hoặc Bộ nhớ cache-Kiểm soát trong JSP
- 20. Lấy nội dung của đối tượng từ S3 thông qua PHP SDK 2?
- 21. Đặt tiêu đề phản hồi http từ AWS lambda
- 22. PHP remove tiêu đề HTTP
- 23. Đặt điều khiển bộ nhớ cache mặc định và hết hạn cho toàn bộ nhóm S3/CloudFront
- 24. Làm cách nào để đặt tiêu đề Bộ nhớ cache-Kiểm soát cho mọi phản hồi trong Catalyst?
- 25. Các trường tiêu đề yêu cầu hết hạn, bộ nhớ cache kiểm soát và pragma HTTP của tôi sẽ được đặt thành?
- 26. Heroku Cedar Stack - Tiêu đề bộ nhớ cache giá
- 27. Lấy khóa đối tượng từ URL bằng AWS SDK (v2)
- 28. aws sdk php để liệt kê các thư mục s3
- 29. danh sách đối tượng AWS S3
- 30. Xóa bộ nhớ cache trên AWS Redshift
Bạn có thể gắn cờ câu trả lời của tôi là "được chấp nhận" nếu nó giúp bạn. – Scuzzy