web-dev-qa-db-ja.com

キャッシュ制御の厳格なルールとは何ですか?

Confession:維持するサイトには、主にサーバーのデフォルト構成に基づいてキャッシュ制御に関するさまざまなルールがあり、その後に Page SpeedY-Slow FirefoxプラグインおよびGoogleの Speed Tracer のNetwork Resourcesビュー。 Cache-Controlは、何をするかによってプライベート/パブリックに設定されます。ETagの/ Last-Modifiedヘッダーは、Y-Slowが何か問題があることを示唆し、Amazon用のファイルを手動でgzipするときにVary-Accept-Encodingが必要な場合にのみ変更されますCloudFront。

さまざまなオプションとその機能についての資料を読むと、矛盾する情報、壊れたプロキシの規則、および cargo cult 設定があるようです。上記の分析ツールによって提供される公式情報は、統一された戦略としてではなく、各トピックを個別に処理するため、まったくアクセスできません(したがって、技術の相互参照はありません)。

たとえば、速度解析ツールがETagを使用するサイトを、キャッシングを支援することを意図している場合、ETagを使用しないサイトと同じと評価することは意味がないようです。

プラットフォームに依存しないキャッシュ制御戦略の厳格なルールは何ですか?

編集:

A link through Jeff Atwoodの記事 は、非常に詳細なキャッシングについて説明しています。

記録のために、ここには厳しい規則があります:

ファイルがGZIPなどを使用して圧縮されている場合-「cache-control:private」をプロキシとして使用すると、圧縮されていないバージョンがクライアントに返される場合がありますそれをサポートします(ただし、ブラウザキャッシュはこのようにマークされたファイルを保持します)。また、「Vary:Accept-Encoding」を含めて、圧縮可能であることを忘れないでください。

ETagと組み合わせてLast-Modifiedを使用-ベルトとブレースの使用は両方のバリデータを提供しますが、ETagは変更時間だけではなくファイルの内容に基づいており、両方を使用していますすべての拠点をカバーしています。 注:AOLのPageTest には、何らかの理由でETagに対するカルトブランシュアプローチがあります。 同じコンテンツをホストするために複数のサーバーでApacheを使用している場合、真に使用している場合を除き、ETagsから暗黙的に宣言されたinodeをFileETagディレクティブから除外して削除します(つまり、「FileETag MTime Size」)同じライブファイルシステム。

可能な限り「cache-control:public」を使用します-これは、プロキシサーバー(およびブラウザキャッシュ)が残りのコンテンツを返してもコンテンツを返すことを意味しますページにはHTTP認証などが必要です。

15
Metalshark

まず、サーバーファーム/クラスターを使用している場合を除き、Yahooが言うようにETagを削除しないでください。同じファイルが変更されていないときに常に同じETagを返す限り、非常に便利なディレクティブです。

他のヘッダーに関しては、Yahooの ベストプラクティス は、静的ファイルには遠い将来のExpiresヘッダーを設定し、動的コンテンツにはCache-Controlを使用することを提案しています。ただし、Cache-controlは静的コンテンツにはまったく問題ありません(それらの間にほとんど違いはありません)。

キャッシュされた静的ファイルを変更するときは、ファイル名を変更するか、固有のパラメーターを最後に追加する必要があります。 example.com/styles.css?v=2。ただし、以下のコメントに記載されているように、実際のファイル名を変更することをお勧めします。

ちなみに、YSlowルールを好みに合わせて編集し、Etagルールを削除して、独自のドメインをCDNとして追加できます。この記事も読むのが良い: Yahooの問題はあなたの問題ではない

8
DisgruntledGoat

キャッシュを使用するようにリソースのリクエストヘッダーを変更するほとんどの人にとって、ebableキャッシングの方法は、Webホスト/サーバー上の.htaccessというファイルにコードを追加することです。

これは、ウェブホスト上のファイルマネージャー(またはファイルを追加またはアップロードする場所)に移動することを意味します。

.htaccessファイルは、サイトの多くの重要な要素を制御します。 .htaccessファイルに慣れていない場合は、.htaccessの使用に関する記事を読んで、変更する前にいくつかの方法を確認してください。

以下のコードは、ブラウザに何をキャッシュし、どのくらいの期間「記憶」するかを指示します。 .htaccessファイルの先頭に追加する必要があります。

## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
## EXPIRES CACHING ##

.htaccessファイルを保存してから、Webページを更新します。

ソース:
https://varvy.com/pagespeed/leverage-browser-caching.html

0
Nomib Nomib