·
Following 第二页修好了 + 两处缓存陷阱清扫 | 4.28
Following 翻页不再串入 explore,话题广场和闪现通知的缓存污染也修好了
| Following 第二页修好了 + 两处缓存陷阱清扫 | 4.28 |
Pickful 社区朋友们,
根据大家的反馈,今天又带来了几处修复——其中最关键的一处是:Following 流第二页起出现你没关注的人——已经修好。同步还清扫了上一轮 CDN 修复(公告 #117)之后冒出的两个同根变种。
🐛 Following 第二页起串入 Explore 流
有同学反馈:滚到 Following 第二页之后,开始出现自己根本没关注的人发的推文。第一页是干净的、关注谁就只看到谁。
排查下来是个分页路由 bug:
第一页由 controller 直接拉数据,调用的是「关注列表 + 你自己」的过滤;但负责生成「下一页」链接的 helper 里漏写了 Following 这个分支,于是「下一页」的请求悄悄跳去了 /posts?page=2——也就是 Explore 的第二页。Explore 流什么人都有,你就看到了一堆陌生人。
修复后,Following 流不管第几页都老老实实只返回你关注的人 + 你自己的推文。
⚡ 闪现通知不再串场
我们把一些公开页面(币种页、话题列表、搜索结果等)放到了 CDN 上加速。问题是:登录用户做完一个动作(比如点赞、收藏)后会有一条「操作成功」的闪现提示,这条提示也被 CDN 一起缓存了下来。结果下一个匿名访问者打开同一个 URL,会看到上个用户的提示——「操作成功」「请先登录」之类——莫名其妙。
修复思路:当响应里带 flash 时,自动把缓存策略降级成「不缓存」——这条响应只属于当前用户,CDN 不再保存。没 flash 的正常响应仍然走 CDN 加速,性能没有损失。
顺带把所有被 CDN 缓存的页面都接了一个客户端注水机制:你的点赞、收藏、被你拉黑的用户、可管理话题等个性化状态,都在拿到 CDN 缓存的 HTML 之后再实时拉一次更新。这样缓存版本不再决定你看到的状态。
➕ 话题广场的「+ 新话题」按钮
跟上一轮的「Content missing」是同一根因:/topics 也是 CDN 缓存的,但页面上有两个按登录/客户端分支的「新建话题」按钮——一旦匿名(或 App 原生 shell)用户先访问,缓存里就没有这两个按钮,登录用户进来也看不到,点不开新建话题页。
修复办法和上一轮一致:把按登录态分支的部分挪到不被缓存的个人化接口,CDN 缓存的 HTML 始终是同一份;按钮在拿到真实 session 后再渲染。同时英文版标题从 “Topics Square” 缩成 “Topics”,移动 Web 不再因为标题太长换行。
🧹 顺手:移除 Sentry
我们之前用 Sentry 做错误监控,但很久前就迁到自己的内部观测栈了,Sentry 一直没在用。这次把 gem、初始化文件和 CSP 白名单一并清掉,工程依赖减少两个。对你完全无感,纯内部清理。
💬 致社区
这几个 bug 大多来自社区反馈或我们自己的复盘——Following 第二页是用户直接告诉我们的,话题广场按钮也是用户用着用着发现的。这种细节反馈非常宝贵,请继续告诉我们。
此次修复已在 Web、iOS、Android 三端同步上线,无需更新 App 即可使用。
Pickful 团队
2026 年 4 月 28 日
Repost this post?
Share with your followers.
Reply