7

サイトの読み込み速度を向上させたいので、http://gtmetrix.com/を使用して、改善できる点を確認しています。"Leverage browser caching" に対して私が得た最低の評価の 1 つです。私のファイル(主に画像)に「有効期限が指定されていません」という問題があることがわかりました。

さて、問題は明らかだ、と私は思った。グーグル検索を開始すると、Amazon S3 が有効期限よりも Cache-Control メタデータを好むことがわかりました (このリンクを紛失しました。おそらく何かを誤解していると思います)。とにかく、キャッシュ制御メタを S3 オブジェクトに追加する方法を探し始めました。このページを見つけました: http://www.bucketexplorer.com/documentation/amazon-s3--how-to-set-cache-control-header-for-s3-object.html

PUT クエリに文字列を追加する必要があることを学びました。

x-amz-meta-Cache-Control : max-age= <value in seconds>//(等号と数字の間にスペースは必要ありません (ここで間違いを犯しました))。

私は建設を使用しています:Cache-control:max-age=1296000そしてそれはうまくいきます。

その後、 https ://developers.google.com/speed/docs/best-practices/caching を読みました。この記事では、次のように説明されています。 ."

2) 「より広くサポートされているため、Cache-Control: max-age よりも Expires を優先します。」(推奨トピック内)。

そこで、S3 オブジェクトに有効期限を設定する方法を探し始めました。私はこれを見つけました: http://www.bucketexplorer.com/documentation/amazon-s3--set-object-expiration-on-amazon-s3-objects-put-get-delete-bucket-lifecycle.html

そして、私が見つけたもの: 「Amazon S3 オブジェクトのライフサイクル管理を使用すると、Amazon S3 オブジェクトでオブジェクトの有効期限を定義できます。S3 オブジェクトに定義されたライフサイクルが期限切れになると、Amazon S3 はそのようなオブジェクトを削除します。したがって、データを保持したい場合S3 で期間限定で、Amazon S3 によって自動的に削除されるようにするには、オブジェクトの有効期限を設定できます。」

S3 からファイルを削除したくありません。最大キャッシュ時間または/およびファイル有効期限のためにキャッシュメタを追加したいだけです。

私はこれと完全に混同しました。誰かが私が何を使用しなければならないかを説明できますか: オブジェクトの有効期限またはキャッシュ制御?

4

3 に答える 3

8

S3 では、キャッシュ制御の max-age および Expires ヘッダーを指定できます。CloudFront では、キャッシュ動作の最小 TTL、最大 TTL、およびデフォルト TTL を指定できます。これらのヘッダーは、オブジェクトの有効期限がキャッシュ (クラウドフロントまたはブラウザーキャッシュ) でいつ期限切れになるかを示し、それらがどのように関連しているかを読み取るために、次のリンク http://docs.aws.amazon.com/AmazonCloudFront/latest/を参照してくださいDeveloperGuide/Expiration.html#ExpirationDownloadDist

ブラウザのキャッシュを活用できるようにするには、s3 上のすべてのオブジェクトのキャッシュ コントロール ヘッダーを指定するだけです 。バケット内の既存のオブジェクトにキャッシュ コントロールを追加する手順を実行します。

  1. git クローンhttps://github.com/s3tools/s3cmd
  2. s3cmd --configure を実行します (2 つのキーを求められます - 確認メールまたは Amazon アカウント ページからコピーして貼り付けます。コピーするときは注意してください! 大文字と小文字が区別されるため、正確に入力する必要があります。無効な署名などに関するエラーが発生します。キーに s3:ListAllMyBuckets パーミッションを追加することを忘れないでください。そうしないと、アクセスのテスト中に AccessDenied エラーが発生します。)
  3. ./s3cmd --recursive modify --add-header="Cache-Control:public ,max-age= 31536000" s3://your_bucket_name/
于 2016-02-04T14:19:52.663 に答える
7

ファイルは削除されず、有効期限後にキャッシュされません。

Amazonのドキュメントには次のように書かれています

Expires ヘッダーの有効期限の日時が過ぎると、エッジロケーションがオブジェクトのリクエストを受信するたびに、CloudFront はオリジンサーバーからオブジェクトを再度取得します。

Expires ヘッダー フィールドの代わりに Cache-Control max-age ディレクティブを使用して、オブジェクトのキャッシュを制御することをお勧めします。Cache-Control max-age と Expires の両方の値を指定すると、CloudFront は max-age の値のみを使用します。

于 2013-10-07T15:48:59.887 に答える
3

「Amazon S3 Object Lifecycle Management」は、定義可能なルールに基づいてバケットからいくつかのオブジェクトをフラッシュします。あくまで収納の話です。

やりたいことは、Cache-Control ヘッダーを設定するときに、HTTP 要求の Expires ヘッダーを設定することです。同じように機能します。このヘッダーを PUT クエリに追加するだけです。Expires は Cache-Control として機能しません: Expires は日付を指定します。例: 2013 年 1 月 31 日土曜日 23:59:59 GMT

これを読むことができます: https://web.archive.org/web/20130531222309/http://www.newvem.com/how-to-add-caching-headers-to-your-objects-using-amazon-s3 /

于 2013-09-26T16:35:36.793 に答える