2011-02-10 10 views
1

大量に使用されているWebサイトのキャッシング戦略を設計中です。 サイトは、動的コンテンツと静的コンテンツの組み合わせで構成されています。フロントエンドはPHPで、中間層はTomcatとMySQLのバックエンドです。頻繁に使用されるWebサイトのキャッシング戦略

資格情報を保護するために、HTTPS経由でユーザーログイン画面のみが実行されます。その後、すべてのコンテンツがプレーンHTTP経由で配信されます。一部の画面は顧客固有のもの(最後の注文を考えてみましょう)と、他の画面はすべてのユーザー(一般的な製品、プロモーション、ルールなど)に共通です。

予想されるトラフィック量を考えれば、包括的なキャッシング戦略が必要であることは明らかです。だから我々は、次のオプションを検討している:

  1. PHPの前でイカやニスを入れて、すべてのパブリックコンテンツと顧客の偶数次の送信フォームをキャッシュするように設定します。
  2. ページフラグメント(ほとんどの一般的な製品など)をキャッシュするためにPHPでmemcachedを使用
  3. 中間層/ tomcatsにキャッシュを実装する(つまり、Webサーバにコンテンツを返す前にehcacheなどのローカルキャッシュからキャッシュを取得しようとする)
  4. Zend CacheのようなPHPレベルのキャッシュを使用して、ページの断片を保存します。これは私が述べた2番目のオプションに近いですが、Zendフレームワークに組み込まれています。

これらの戦略を組み合わせて使用​​することもできます。

したがって、Varnishのようなフロントキャッシュを追加するか、内部でZend Cacheを使用することは価値があるのですか?


Zend CacheのようなPHPレベルのキャッシュを使用してそのページの断片を保存することを忘れてしまったという別のオプションもあります。これは私が述べた2番目のオプションに近いですが、Zendフレームワークに組み込まれています。

したがって、Varnishのようなフロントキャッシュを追加するか、内部でZend Cacheを使用することは価値があるのですか?

ありがとう、 Philopator。

+0

どのような戦略をとっても、ワニスキャッシュページを持つと、PHPからページロードを完全に取り除くことができるということに気づくだけで、トラフィックの量に大きな違いが生じます。 – ZoFreX

答えて

1

私はこのようなかなりの数のプロジェクトを行っていることと見つけた:(完全な)カスタムソリューションを作成することは困難かつ高価である

  • 。幸いなことに、あなたは、イカ/ワニスを見つけmemcacheのとサイトの動的挙動
  • をEhcacheの多くの異なる、あなたが最良のあなたのサイトを知っているので、それはそれはキャッシュの複数の層を配置することは理にかなって、特定のキャッシュ戦略
  • を考案することには意味があります。しかし、これはサイトの動作を複雑にするので、サイト(ビジネスなど)に関わるすべての人にそのことを伝え、エンジニアに多くのことを伝える必要があります。
  • 問題をどのようにデバッグするか考えてみましょう。例えば特定のユーザーがキャッシュをパージまたは回避できるようにするヘッダーを追加する
  • さまざまなキャッシュレイヤーがどのように機能するかを定期的にチェックします(たとえば、ワニスマシンにnagiosプラグインを使用します)。それはです:あなたのパフォーマンスの問題は、あなただけの短い間の任意のキャッシュ:)
  • キャッシング特定のオブジェクトを構築する前に、
  • 尺度はすでに、私はたくさんのニスが好き

これらの日は非常に重要な改善をすることができJava/PHPコードを混乱させない独立したレイヤーであり、高速で柔軟性があります。欠点は、vclの設定が少し複雑すぎることです。

小さなデータセットでは待ち時間(例:データベースクエリやサービス要求)を避けるために、通常はehcache +をメモリストレージに使用しますが、大量のデータがあり、複数のノードでキャッシュを共有する必要がある場合はmemcachedします。

+0

お返事ありがとうございました。 – Philopator

+0

ここに助けがありますか? :) http://stackoverflow.com/questions/35632607/is-the-http-verb-purge-idempotent –

関連する問題