投稿と、それらの投稿をお気に入りに追加できるユーザーを備えた標準のブログタイプのアプリケーションがあります。
目標
- ユーザーが投稿のリストを見ると、各投稿がお気に入りかどうかの表示(画像)が表示されます。匿名ユーザーにはお気に入りがありません。
- 投稿のリストは、計算に費用がかかるため、Varnishにキャッシュする必要があります(匿名ユーザーとログインユーザーの両方)。
アイデア
リストページをVarnishにキャッシュし、ESIを使用してお気に入り情報を取得します...
- ...現在のリクエストを行っているユーザーの投稿ごと。欠点:1ページあたり50のESIリクエスト(基本的にN + 1の問題)。
- ...ページに保存されるJSONオブジェクトとして。クライアントでは、このオブジェクトが読み取られ、DOMが操作されてお気に入り情報が示されます。欠点:Javascriptがないユーザーには機能しません。
- ...ページに保存されるCSSスニペットとして。CSSは、各投稿に何を表示するかを決定します。欠点:スタイル設定可能なコンテンツ(つまり、画像)に対してのみ機能します。テキスト情報を表示することはできません。
私が望むことを達成するための可能性を逃していますか?アイデア3は最も賢い答えのようですが、ユーザーが投稿をお気に入りに追加した日付も表示したい場合は機能しません。