2012-04-18 2 views
4

高トラフィックフォーラムのようなWebサイトのページコンテンツをキャッシュするために、ESIでVarnishを使用して調査しています。Varnish&ESIs:並行して取得可能な回避策

コンテキスト:私は訪問者のみのコンテンツをキャッシュしたい(接続されたユーザーは本当に異なるディスプレイを持ち、絶対的な新鮮なコンテンツを必要とする)。それでも、訪問者にとっては、ページの一部が動的である必要があります: - 訪問者依存モジュールのようなキャッシングはできません(表示されたページのリアルタイム分析が行われる '提案'ビーコンに) - 「最新の投稿」ウィジェットや非常に変化する広告キャンペーンなど、15万の小さなTTLでキャッシュすることができます。

現在、Apache/PHP/symfony/memcacheを使用してページをキャッシュし、ESIのような内部的な仕組みを持っています。キャッシュからのページが解析され、特定のタグが解釈されます(Webサービスやデータベース)。これは、サーバー時間が約700ms前後であるため、十分なパフォーマンスが得られません。

このソリューションの再配置では、Varnish + ESIを使用できます。ページに含まれるESIの総数は15に達することができます。フェッチするESIの実際の数はESIのTTLを除いてはそれ以下ではありません。重大な問題は、ワニスがパラレルではなくシーケンシャルにESIをフェッチし、これが受け入れられないことです。この機能は、Varnishのロードマップで遅れています。

ので、

  • ワニスとのESIとのあなたの経験は何ですか? ESIの数、応答時間はどのくらいですか?

  • パラレルESIフェッチを使用する回避策やその他の重大かつ構成可能な逆プロキシを知っていますか?

  • そうでなければ、同等のユースケースにどのような良いキャッシング戦略を使用しますか?

おかげで、 P.

+0

* 15 * ESIには?それはむしろ非常識な数字です。それらを少数のグループに再配置してCSSで配置することはできませんか? –

+0

は本当に、ページが別のTTLを持つさまざまなデータソースから動的なコンテンツの多く(複数の広告ゾーン、お薦め、ユーザモジュール、...と思う) – Pascal

+0

は(あなたが私を突き、今という)再びこの質問を見ているわけではありません:これは、 Stack Overflow([FAQ#dontask]を参照してください)についてあまりにも開いて曖昧な質問。サーバフォールトに関する話題になるかもしれない特定の側面に焦点を当てるように緊張している(ただし、FAQを最初にチェックする)。 –

答えて

0

は現在、私は、高トラフィックサイトのために働く、とパフォーマンスは私たちのためにすべてです。いくつかのページでは、例えば検索結果リストにESIをたくさん(20+)使用しています。 resultlistはJSONレスポンスで、その中のすべての結果ブロックは別個のESIです。さて、私たちはキャッシュウォーミングを行います。しかし、私たちはこれに関するパフォーマンス上の問題で走っていませんでした。バックエンド要求が本当に遅い場合、ESIの数は問題になります。

パラレルESIフェッチはVarnishの機能要求リストにありますが、バージョン4.1ではそれができなかったと思います。

関連する問題