大量のトラフィックを伴う新しいプロジェクトで、Symfony2 アプリを構築してキャッシュを活用し、将来的により積極的になる準備をする方法を考えています。あなたの意見を知りたいです。
ユーザーがページに場所のリストをリクエストしたとします。このページには次のものがあります。
- list
- common data (title, author, description)
- user data (the user likes the list + other data)
- first 20 places
- common data (title, photo of each place)
- user data (the rates of the user for those places)
HTML は次のようになります。
<html>...
<body>
<header>
...
<!-- Embed the top user menu -->
<esi:include src="http://example.com/profile/menu" />
...
</header>
<content>
...
common data of the list
...
<!-- Embed the common data of the first 20 places, the same for everyone -->
<esi:include src="http://example.com/lists/17/places" />
...
<!-- Embed the user data of the list (used in JS) -->
<esi:include src="http://example.com/lists/17/user" />
...
<!-- Embed the user data of the list of places (used in JS) -->
<esi:include src="http://example.com/lists/17/places/user" />
...
</content>
</body>
</html>
HTML はゲートウェイ (Symfony または Varnish) にキャッシュされます。ほとんどの場合、場所のリストもゲートウェイにキャッシュされます。ユーザーデータリクエストは、呼び出されてキャッシュされないものになります (少なくとも最初はそうではありません)。
質問:
- この構造をどう思いますか?
- ユーザーが匿名の場合、ユーザー データの esi-includes を作成しないようにすることはできますか? また、anonユーザーのCookieを持っている場合は? どのように?
- ユーザーメニューの esi-include は理にかなっていますか?
- それとも、ESI を忘れて、常にコントローラーを経由する必要がありますか (たとえば、共通データのレンダリングされたビューをキャッシュします)?
- サーバーで待機する代わりに、ユーザー データを AJAX 呼び出しにするよう要求する 2 つの ESI 要求を移動する必要がありますか?
- 迅速に行う必要がある場合、これはスケーリングするための良いアプローチですか? 何が一番いいでしょうか?
どうもありがとう!