web-dev-qa-db-ja.com

変化するサイトのキャッシュ

静的コンテンツが週に少なくとも4回変更されるWebサイトを運営しており、使用するのに最適なヘッダー配置を見つけようとしています。

現在、使用中のすべてのキャッシュ関連ヘッダーがあります。 cache-controlは、max-age値が非常に低い(最大60秒)必要に応じて再検証するように設定しています。また、Webサイトの最終更新日時を示すタイムスタンプのエンコード値にEtagヘッダーを設定しています。 Etag値は、Webサイトのコンテンツが変更されたときにのみ変更されます。また、max-ageと同等の値に設定された最終変更ヘッダーがありますが、適切なGMT日付形式です。これが私のヘッダーの例です:

    HTTP/1.1 200 OK
    Date: Tue, 17 Mar 2015 06:24:14 GMT
    Server: Apache
    Set-Cookie: PHPSESSID=f7cf7d0171b7a7cba54aaddc90c7eabd; path=/;
    Vary: Accept-Encoding
    ETag: "d06a8d9a82809e0f35669ce1fb80dca3"
    Last-Modified: Tue, 17 Mar 2015 04:34:52 GMT
    Cache-control: max-age: 5,must-revalidate
    Expires: Tue, 17 Mar 2015 06:25:14 GMT
    Connection: keep-alive
    Content-Length: 22583
    Content-Type: text/html; charset=UTF-8

だから私は、週に3回(新しいコンテンツが追加されたとき)から1日5倍(ウェブサイトが修復されたとき)の間に変化するサイトをキャッシュする最良の方法について興味があります。最初はキャッシュ制御ラインを完全に削除すると思いますが、プロキシがそれをどのように評価するかわかりません。現在の設定は、webpagetest.orgでコンテンツをキャッシュするためのFのスコアに貢献しています。

私が持っているべき最良のヘッダー配置を提案しますか、そのままにしておくべきですか?何か案は?

3
Mike

新しいコンテンツが起動されたとき、ユーザーがそれを見ることは絶対に重要ではないかもしれませんすぐに。その場合、キャッシュコントロールを緩和し、コンテンツを1〜2時間キャッシュできるようにし、ユーザーが再検証する必要がないようにすることができます。実際には「必ず検証する」必要がありますが、ページを永久にキャッシュすることを許可しないことに意味はありません。

そうでなければ、あなたのキャッシュ制御は合理的であるように見えます。すべてのキャッシュ制御ヘッダーを削除しますwouldあなたのページではなく、指定されていない時間、ページをキャッシュできるようにします。

2

洗練されたキャッシュ層がない限り、キャッシュ時間を短く設定することは、まったくキャッシュしないことと変わりません。 PHPセッションでCookieを使用せずにキャッシュを使用することは、おそらく非常に悪い考えです。

最善の解決策は、非常に長いキャッシュ時間を設定し、コンテンツが変更されたときにURLを変更することです。その方法は、サーバーへのアクセス権とサーバーの種類によって異なります。 mod_pagespeedをapsacheで実行するのは本当に簡単な解決策ですが、キャッシングリバースプロキシを前面に置く必要があります。

0
symcbean