2013-09-05 106 views
7

Tôi muốn nâng cao tốc độ tải trang web, vì vậy tôi sử dụng http://gtmetrix.com/ để kiểm tra những gì tôi có thể cải thiện. Một trong những đánh giá thấp nhất tôi nhận được cho "Tận dụng bộ nhớ đệm trình duyệt". Tôi thấy, rằng các tập tin của tôi (chủ yếu là hình ảnh), có vấn đề "hết hạn không được chỉ định".Amazon S3: Cache-Control và Expiry Date khác biệt và thiết lập máng REST API

Được rồi, vấn đề là rõ ràng, tôi nghĩ. Tôi bắt đầu googling và tôi thấy rằng amazon S3 thích Cache-Control meta dữ liệu qua ngày hết hạn (tôi bị mất liên kết này, bây giờ tôi nghĩ rằng có lẽ tôi hiểu lầm một cái gì đó). Dù sao, tôi bắt đầu tìm kiếm làm thế nào để thêm bộ nhớ cache kiểm soát meta để đối tượng S3. Tôi đã tìm thấy trang này: http://www.bucketexplorer.com/documentation/amazon-s3--how-to-set-cache-control-header-for-s3-object.html

Tôi đã học được rằng tôi phải thêm chuỗi vào truy vấn PUT của mình.

x-amz-meta-Cache-Control : max-age= <value in seconds> // (không cần khoảng trắng giữa dấu và chữ số bằng nhau (tôi đã nhầm lẫn ở đây)).

Tôi sử dụng công trình xây dựng: Cache-control:max-age=1296000 và hoạt động tốt.

Sau đó tôi đọc https://developers.google.com/speed/docs/best-practices/caching Bài viết này cho tôi biết: 1) "Đặt hết hạn tối thiểu một tháng và tốt nhất là tối đa một năm trong tương lai".

2) "Chúng tôi muốn hết hạn hơn Cache-Control: tối đa độ tuổi vì nó được hỗ trợ rộng rãi hơn." (Trong chủ đề Đề xuất).

Vì vậy, tôi bắt đầu tìm cách để đặt ngày hết hạn thành đối tượng S3. Tôi thấy điều này: http://www.bucketexplorer.com/documentation/amazon-s3--set-object-expiration-on-amazon-s3-objects-put-get-delete-bucket-lifecycle.html

Và những gì tôi thấy. "Sử dụng Amazon S3 Object Lifecycle Management, bạn có thể xác định hết hạn Object trên Amazon S3 Objects Khi Vòng đời định nghĩa cho các đối tượng S3 hết hạn, Amazon S3 sẽ xóa như vậy Vì vậy, khi bạn muốn giữ dữ liệu của bạn trên S3 chỉ trong một thời gian giới hạn và bạn muốn nó bị xóa tự động bởi Amazon S3, bạn có thể đặt Object Expiration. "

Tôi không muốn xóa tệp của mình khỏi S3. Tôi chỉ muốn thêm bộ nhớ cache meta cho thời gian bộ nhớ cache tối đa hoặc/và thời gian hết hạn tập tin.

Tôi hoàn toàn nhầm lẫn với điều này. Ai đó có thể giải thích những gì tôi phải sử dụng: đối tượng hết hạn hoặc kiểm soát bộ nhớ cache?

Trả lời

3

"Quản lý vòng đời đối tượng Amazon S3" xóa một số đối tượng khỏi nhóm của bạn dựa trên quy tắc bạn có thể xác định. Nó chỉ là về lưu trữ.

Điều bạn muốn làm là đặt tiêu đề Hết hạn của yêu cầu HTTP khi bạn đặt tiêu đề Bộ nhớ cache-Kiểm soát. Nó hoạt động tương tự: bạn juste phải thêm tiêu đề này vào truy vấn PUT của bạn. Hết hạn không hoạt động như Kiểm soát bộ nhớ cache: Hết hạn sẽ cho một ngày. Ví dụ: Sat, 31 tháng một 2013 23:59:59 GMT

Bạn có thể đọc: https://web.archive.org/web/20130531222309/http://www.newvem.com/how-to-add-caching-headers-to-your-objects-using-amazon-s3/

7

file của bạn sẽ không bị xóa, chỉ cần không lưu trữ, kể từ ngày hết hạn.

The Amazon docs say:

Sau ngày hết hạn và thời gian trong Expires tiêu đề đi, CloudFront được đối tượng một lần nữa từ máy chủ gốc mỗi khi một vị trí cạnh nhận được yêu cầu đối tượng.

Chúng tôi khuyên bạn nên sử dụng chỉ thị tối đa Cache-Control thay vì trường Tiêu đề hết hạn để kiểm soát bộ nhớ đệm đối tượng. Nếu bạn chỉ định giá trị cho cả độ tuổi tối đa của Cache-Control và cho Expires, CloudFront chỉ sử dụng giá trị của độ tuổi tối đa.

7

S3 cho phép bạn chỉ định tiêu đề tối đa và hết hạn để kiểm soát bộ nhớ cache, CloudFront cho phép bạn chỉ định TTL tối thiểu, TTL tối đa và TTL mặc định cho hành vi bộ nhớ cache. và những tiêu đề chỉ nói khi tính hợp lệ của một đối tượng sẽ hết hạn trong bộ nhớ cache (có thể là CloudFront hoặc bộ nhớ cache của trình duyệt) để đọc như thế nào họ có liên quan đọc liên kết sau http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html#ExpirationDownloadDist

Đối với cho phép bạn Đòn bẩy Trình duyệt bộ nhớ đệm chỉ xác định tiêu đề kiểm soát bộ nhớ cache cho tất cả các đối tượng trên s3 làm bước để thêm quyền kiểm soát bộ nhớ cache cho các đối tượng hiện có trong xô của bạn

  1. git clone https://github.com/s3tools/s3cmd
  2. Run s3cmd --configure (Bạn sẽ được yêu cầu nhập hai khóa - sao chép và dán chúng từ email xác nhận hoặc từ trang tài khoản Amazon của bạn. Hãy cẩn thận khi sao chép chúng! Chúng phân biệt chữ hoa chữ thường và phải được nhập chính xác hoặc bạn sẽ tiếp tục gặp lỗi về chữ ký không hợp lệ hoặc tương tự. Hãy nhớ thêm s3: ListAllMyBuckets quyền truy cập vào các phím hoặc bạn sẽ nhận được lỗi AccessDenied trong khi kiểm tra quyền truy cập.)
  3. ./s3cmd --recursive modify --add-header = "Cache-Control: public, max-age = 31536000 "s3: // your_bucket_name/