社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

GitHub Issues 大改造:用缓存和预取,让页面打开快了数倍

AI前线 • 3 周前 • 290 次点击  
作者 | Leela Kumili
译者 | 田橙

GitHub 重新设计了 GitHub Issues 背后的导航架构,通过将更多工作迁移到客户端,降低开发者感知到的延迟。工程团队引入了客户端缓存、预测性预取以及基于 Service Worker 的请求处理机制,提升了导航性能,使即时导航体验的比例从 4% 增加到了 22%。这些改动解决了大型 Web 应用中的一个常见挑战:减少由重复网络请求和客户端初始化导致的延迟,尤其是在频繁重复的工作流程中。

这项工作主要针对 GitHub Issues 用户展开,他们经常需要在 Issue、列表以及相关视图之间切换。过去已经获取的信息,现在可以被重新利用,而无需再次从后端服务获取。为了减少这些重复的网络依赖,GitHub 采用了一种本地优先(local-first)的方法:浏览器会立即使用已有数据进行渲染,同时后台进程会在需要时获取更新的信息。该架构使用了多个客户端存储层,包括用于持久化存储的 IndexedDB,以及用于活跃会话期间高频访问数据的内存缓存。

GitHub Issues 客户端架构

BareStack 强调了 预取(prefetching)方面一个重要的区别:

当数据图规模较小且以读取为主(例如 Issues)时,预取能够发挥作用。大多数应用拥有更大的数据图,并且存在读写冲突,因此预取的视图在进入页面后可能仍然需要重新获取数据。可复用的模式是“优先渲染页面外壳 + 基于缓存命中进行数据填充”,而不是预取本身。

Oguz Guven 也 指出 了另一个重要的性能优化经验:

从关注 p99 尾部延迟转向关注整体分布质量,是工程成熟度真正体现的地方。

缓存模型采用了 stale-while-revalidate(过期后重新验证)策略。当用户重新访问之前打开过的内容时,应用可以直接展示本地存储的数据,而无需等待服务器响应。随后,系统会在后台执行同步,更新缓存信息,并保持与后端数据的一致性。

GitHub 引入了预热(preheating)机制,以提升缓存效果。该机制会根据用户的导航模式,在用户发起请求之前提前准备可能需要的数据,并填充相关缓存条目。团队还进一步扩展了这一方案,引入了能够拦截浏览器请求并检查本地可用资源的 Service Worker。缓存数据可以立即渲染,同时后台更新会同步更新后的信息。对于不可用或已经过期的数据,请求仍会继续走正常的后端路径。

Service Worker 请求流程

该架构需要在响应速度和数据新鲜度之间取得平衡。GitHub 不再等待每次交互都必须先获取最新服务器状态再进行渲染,而是允许部分内容立即展示,并通过异步方式完成更新。这种方式降低了用户等待时间,同时保留了与后端系统的数据同步能力。

GitHub 高级软件工程师 Alexander Lelidis 解释说,团队认为延迟不仅仅是一项指标,他表示:

延迟不仅仅是一个指标。它是一种上下文切换。

GitHub 对导航延迟分布进行了测量。P10 延迟从大约 600 毫秒降低到了 70 毫秒,P25 从 800 毫秒降低到了 120 毫秒,中位延迟则从 1,200 毫秒降低到了 700 毫秒。P75 和 P90 延迟也有所改善,分别从 1,800 毫秒降低到了 1,400 毫秒,以及从 2,400 毫秒降低到了 2,100 毫秒。

原文连接:

https://www.infoq.com/news/2026/07/github-issues-navigation/

图片会议推荐

做 AI 的谁还没点技术焦虑,来 AICon 深圳站,吃颗技术定心丸! 大会限时 9 折专属优惠,现在报名立减 580,更多详情可扫码或联系票务经理13269078023 进行咨询。

图片
今日荐文

卡帕西入职Anthropic仅两月疑离职;日媒拆解宇树G1后认输:短期内赶不上中国;腾讯317万年终奖员工被辞退:永不录用|AI周报

全球首款2nm GPU 炸场,OpenAI、Meta、微软站台!AMD 要拆掉英伟达护城河?

腾讯开源三大具身基座模型,首席科学家张正友详解“三层脑”如何破解机器人反应慢

最强模型“跳票”,市值一夜蒸发2000亿美元!谷歌连上三款“省油”模型,死磕每一个token的钱

智谱的算力野望浮出水面!自建1GW机房、数亿收购中科系Infra企业、布局自研芯片,加速去“英伟达化”

图片
你也「在看」吗?👇

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/199258