7

概要

stackoverflow やネットを調べていると、セッションを使用する高パフォーマンス サイトをキャッシュするためのベスト プラクティスに関する適切なドキュメントが一般的に不足していることがわかります。いくつかの基本的なビルディング ブロック、特にキャッシングに関するいくつかのアイデアを共有できれば助かります。この議論の目的のために、私は memcache を避け、完全に生成された静的ページとページのキャッシングに焦点を当てています。

シナリオを設定するには、Web サーバー (nginx など)、リバース プロキシ (varnish など)、アプリ サーバー (何でも)、db サーバー (mysql など) を想像してください。

匿名

  1. 静的アイテム (gif/jpg など)
  2. 半動的 (js/css)
  3. 動的

ログインしました

  1. 静的
  2. 半動的 (js/css)
  3. 動的

一般的に言えば、すべての Anon はキャッシュ可能であり、ほとんどがログインしている必要があります (動的を無視し、今のところ ESI はありません)。

アノン #1

  • はるかに有効期限を設定する
  • 可能であれば ETag を設定する
  • キャッシュ制御: max-age=315360000

Anon #2 (動的に生成された場合はリバース プロキシに結果をキャッシュさせます。それ以外の場合は Anon #1 ルールが適用されます)

  • キャッシュ コントロール: パブリック、s-maxage=3000

アノン #3

  • キャッシュ コントロール: パブリック、s-maxage=300

ログイン #1

  • はるかに有効期限を設定する
  • 可能であれば ETag を設定する
  • キャッシュ制御: max-age=315360000

ログイン #2 (動的に生成された場合はリバース プロキシに結果をキャッシュさせます。それ以外の場合はログイン #1 ルールが適用されます)

  • キャッシュ コントロール: パブリック、s-maxage=3000

ログイン #3

  • キャッシュ制御: s-maxage=0、再検証が必要

あなたの提案は何ですか?回答が入り次第、投稿を更新します。

4

4 に答える 4

2

これに対する私の最良の答えは、すべての静的ファイルに多くのオプションがあり、それぞれが特定のシナリオで有益な独自の方法で多くの利益を生み出す可能性があるため、特定のニーズに応じて長所と短所を比較検討してください。 .

ただし、ほとんどの人が考慮していないのは、動的コンテンツ、データベースの結果のキャッシュなどは優れていますが、実際には PHP/ASP などの解析エンジンを実際に起動する必要があります。

wordpress のスーパーキャッシュ プラグインを見ると、html を静的ファイルとして実際に準備する機能があることがわかります。それだけでなく、gzip のコピーも作成し、書き換えルールを使用して、パーサーを起動する代わりにこれらのファイルの存在を確認します。これにより、処理時間だけでなく帯域幅も節約されるため、明らかに最良の結果が得られます。

パフォーマンスの不均衡を確認したい場合は、apachebench の結果を<?php die('hello world');静的な .html ページの提供と比較してください。

明らかに、この種のキャッシングには注意が必要ですが、PHP のようなインタープリター内からフルページ キャッシングを置き換えることは非常に便利です。

于 2009-07-29T09:52:17.473 に答える
1

ySlow ページにいくつかの関連する提案があります。

Etags は明らかに良い考えではないかもしれません

于 2009-04-16T08:21:20.580 に答える
0

スケーラブルなインターネット アーキテクチャを読むことをお勧めします。キャッシングや CDN などによるスケールアップに関する章がいくつかあります。正しい方向に進むことができるはずです。私が非常にサポートしているサイトをスケールアップするのに役立ちました.

--

于 2009-04-17T00:12:01.697 に答える