<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>搜索与发现 on PlumePHP</title><link>https://plumephp.com/tags/%E6%90%9C%E7%B4%A2%E4%B8%8E%E5%8F%91%E7%8E%B0/</link><description>Recent content in 搜索与发现 on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Mon, 19 Oct 2026 20:30:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/tags/%E6%90%9C%E7%B4%A2%E4%B8%8E%E5%8F%91%E7%8E%B0/index.xml" rel="self" type="application/rss+xml"/><item><title>《互联网产品的客户端架构·内容、社交与实时互动》12.3 发现页的推荐位与内容流的差异</title><link>https://plumephp.com/inet-client-social-12-3-discover-vs-feed/</link><pubDate>Mon, 19 Oct 2026 20:30:00 +0800</pubDate><guid>https://plumephp.com/inet-client-social-12-3-discover-vs-feed/</guid><description>发现页不是换皮的信息流：运营位、榜单、专题与普通内容来自不同契约。本节用纯函数组合器实现固定槽位、跨源去重、占位与曝光 key，讲清位置为什么不能塌陷、去重优先级如何显式表达，给出可复用的布局校验规则，并复盘一次运营位为空导致整页错位的事故。</description></item><item><title>《互联网产品的客户端架构·内容、社交与实时互动》12.2 结果分页与筛选状态的保持</title><link>https://plumephp.com/inet-client-social-12-2-search-paging-state/</link><pubDate>Mon, 19 Oct 2026 19:00:00 +0800</pubDate><guid>https://plumephp.com/inet-client-social-12-2-search-paging-state/</guid><description>搜索结果页最容易丢的不是数据，而是状态：本节用纯函数 reducer 管理查询词、筛选条件、游标与版本号，讲清条件变化为什么必须重置游标、筛选如何安全放进 URL、返回时恢复什么，以及空结果与「没有更多」的区别，并复盘一次筛选后仍用旧游标翻页的事故。</description></item><item><title>《互联网产品的客户端架构·内容、社交与实时互动》12.1 输入联想：防抖、竞态与缓存</title><link>https://plumephp.com/inet-client-social-12-1-suggest-debounce/</link><pubDate>Mon, 19 Oct 2026 15:30:00 +0800</pubDate><guid>https://plumephp.com/inet-client-social-12-1-suggest-debounce/</guid><description>联想框的难点在输入与响应之间：本节用可注入调度器的 TypeScript 控制器实现防抖、输入法组合抑制、取消在途请求与 latest-wins 版本号，解释缓存 key 为什么必须包含完整查询词，并复盘一次慢请求后到覆盖新结果的线上故障。</description></item></channel></rss>