微信"不看他的朋友圈"背后的技术原理

14 阅读2分钟

在微信朋友圈中,点击"不看他的朋友圈"后,对方的内容会立刻从页面消失。这个"立即消失"的效果,用了什么技术?

这背后并不复杂,本质上是一套本地状态过滤加上异步持久化的组合拳,整个过程分为两个阶段:

  • 1本地过滤(立即执行) — 客户端把该用户 ID 写入内存中的黑名单集合,触发一次列表重渲染,目标用户的条目从 UI 上消失。全程不涉及网络请求。
  • 2异步持久化(后台进行) — 与此同时,一个网络请求悄悄发往服务器,把屏蔽设置保存下来。这个请求的延迟或失败,对用户的即时体验没有任何影响。

// 伪代码示意 function blockUser(userId) { blacklist.add(userId); // 1. 立即写入内存 renderFeed(feed.filter( // 2. 过滤并重渲染 post => !blacklist.has(post.authorId) )); api.saveBlock(userId); // 3. 后台异步持久化 }

设计模式

这种"先更新 UI,再同步服务器"的模式,有一个专有名词:

Optimistic UI乐观更新——假设操作会成功,先反映到界面上,失败时再回滚。这是现代社交 App 流畅体验的核心设计哲学。

技术模式

作用

典型场景

Optimistic UI

不等服务器确认,先更新 UI

点赞、关注、屏蔽

本地状态管理

内存维护黑名单,过滤渲染数据

屏蔽列表、筛选条件

异步持久化

后台静默同步设置到服务器

所有偏好设置的保存

列表重渲染

数据源变化后触发 UI diff 更新

动态列表过滤、排序

为什么感觉"很快"

根本原因是:用户感知到的操作完全在本地完成,网络延迟被彻底隐藏在后台。

下次 App 启动时,客户端会从服务器重新拉取黑名单,服务端也会在接口层面过滤掉被屏蔽的人,最终保证两端数据对齐。

这套思路并非微信独有——微博、抖音、Twitter/X 的类似操作,背后都是同一套逻辑。Optimistic UI 是当今所有主流社交产品的标配。