4

キャッシュを有効にすると、動的コンテンツに影響しますか?

たとえば、私のPHPサイトの1つでは、キャッシュヘッダーは次のように設定されています。

Cache-Control: public, max-age=21600

それは動的コンテンツにも影響しますか?

もしそうなら、動的PHPサイトをキャッシュする標準的な方法は何ですか?おそらく、静的コンテンツ(画像など)はキャッシュしますが、動的コンテンツ(html、テキストなど)はキャッシュしません。どのようにそしてどこでそれを達成しますか?

4

2 に答える 2

3

はい。答えはイエスです。これは、ブラウザと一部のISPキャッシングを制御します。多くの場所で指定した時間、動的コンテンツをキャッシュします。すべてではない。すべてのブラウザがルールに従うわけではなく、すべてのISPがルールに従うわけではありません。有名なことに、AOLは人々のキャッシュルールを無視し、奇妙な時期にすべてをキャッシュして、初期のWebでページを壊していたことで有名です。

キャッシュされていない動的ページでは、この値を使用して、比較的頻繁に変更されないページを設定して、10分から1時間キャッシュすることができます。画像、css、jsファイルなどの場合はもっと長くなります。8時間のキャッシュは、1時間よりもはるかに長いため、多分多すぎますが、コンテンツのヒットの総数は7だけ減少します。

その他のキャッシング

コンテンツをキャッシュする方法は他にもありますが、おそらくもっと信頼性があります。クエリキャッシング、ファイルキャッシング、memcachedを調べることができます。これらのオプションはすべて、コンテンツ以外のものをキャッシュするためにも使用できます。それらはすべて、反復的なアクションをスピードアップするのに役立ちます。

クエリキャッシング

MySQLが事実上の標準である多くのデータベースは、クエリキャッシングを提供します。これにより、クエリが最後に実行されてから更新されていないテーブルに対するクエリの結果がキャッシュされます。正規化されたルックアップテーブルに最適です。ブルームーンで一度だけ更新されるテーブルに最適です。約1時間から10分ごとに更新されるテーブルに適しています。それより頻繁に変更されるテーブルの場合、限られた時間節約の結果が得られます。

ファイルのキャッシュとMemcached

これらは、情報のキー/値ペアをキャッシュするために使用できます。それらは、page_url / page_content、page_list / array_of_pages_in_site、またはその他の必要なキーと値のペアにすることができます。これは、ほとんどの人が最近10〜60分間ページをキャッシュする方法です。それらは信頼性が高く、サーバー上で制御され、必要に応じて即座にフラッシュできます。これらは時間ベースである必要はありません。ロジックが正しく記述されていれば、クエリキャッシュのように扱うことができます。情報が更新された場合にのみ、そのキーをキャッシュからフラッシュします。その後、ページは即座に更新され、それ以外の場合はキャッシュに残ります。

ヘッダーキャッシュ

これにより、ヘッダーキャッシュに戻ります。他のキャッシュが配置されている場合でも、ここで約10分間キャッシュするのは賢明です。他のキャッシュは依然としてサーバーの要求を必要とし、サーバーの速度を低下させる可能性があります。これによってその圧力が大幅に低下することはありませんが、低下します。また、インストールにそれほど手間はかかりません。

于 2012-09-25T14:04:53.293 に答える
0

ウェブサイトはリソース[ページ、画像、スクリプトも]で構成されており、それらすべてに有効期限を設定するか、変更した要素のキャッシュを無効にします[たとえば、ホームページに新しい投稿を追加した、またはエントリを編集しました]。

一般的な解決策は、Varnishのようなリバースプロキシを使用することです。これは、キャッシュされたものをクライアントに非常に高速に提供し、コンテンツのキャッシュヘッダーが変更された場合は新しいバージョンを探します。

キャッシングヘッダージェネレーターのプロセスはあなた次第です-ここでいくつかのアイデアを見つけることができます

于 2012-09-25T13:01:23.077 に答える