我有一个标准的博客类型应用程序,其中包含可以将这些帖子添加到他们的收藏夹的帖子和用户。
目标
- 当用户查看帖子列表时,他们应该看到每个帖子是否是收藏夹的指示(图像)。匿名用户没有任何收藏夹。
- 帖子列表需要缓存在 Varnish 中(对于匿名用户和登录用户),因为计算成本很高。
想法
在 Varnish 中缓存列表页面并使用 ESI 获取收藏夹信息...
- ...对于发出当前请求的用户的每个帖子。缺点:每页 50 个 ESI 请求(基本上是N+1 问题)。
- ... 作为 JSON 对象,然后存储在页面上。在客户端,读取此对象并操作 DOM 以指示收藏夹信息。缺点:不适用于没有 Javascript 的用户。
- ...作为存储在页面中的 CSS 片段。CSS 确定每个帖子要显示的内容。缺点:仅适用于可样式化的内容(即图像)。无法显示文本信息。
我是否错过了实现我想要的任何可能性?想法 3 似乎是最聪明的答案,但如果我还想显示用户收藏帖子的日期,它就行不通了。