保存成功
订阅成功
保存失败,请重试
提交成功

前端遇上 Go: 静态资源增量更新的新实践

免费
美团技术团队
4.1

前端资源加载是前端一个经常谈论的话题。过去我们主要依赖浏览器的默认行为,但这种默认行为往往对缓存的利用率不够。对于一个经常改动发版的页面,我们希望每次上线时,尽可能利用缓存,降低资源发布时给用户带来的加载延时。因此,我们开始研究如何更好地结合现代浏览器的缓存设施,对资源进行增量更新。

增量更新说白了其实就是给老文件打上一个增量补丁,使其变成新文件。补丁本身是一个微型的 DSL(Domain Specific Language),我们的资源加载器对其进行解释,即可完成打补丁的过程。补丁文件的体积通常不会很大,理想情况下补丁的大小接近我们实际更新的字节数,因而比传统的全量更新在下载上更有优势。

尽管打补丁过程的性能开销很低,但补丁的生成却要消耗大量的服务器资源。对于目前动辄数百 KB 的静态资源,补丁的生成成为了我们要考虑的一个大问题。在高峰时段,用户对补丁的需求量大增,很容易令我们服务过载瘫痪。过去我们主要通过缓存和服务限流来解决这一问题,虽然有一定成效,但我们希望做的更好。

在调研中,我们发现 Go 语言高并发、高性能、易于开发的特性,对于我们的场景非常合适,因此便产生了使用 Go 语言研发新一代增量更新服务的想法。在实践过程中,我们既享受着 Go 语言特性带来的便利,同时也经受着它的一些缺点,逐渐发展出了自己的一套 Go 语言最佳实践。

本场 Chat 从以下一个方面进行分析讲解:

  • 为什么要做增量更新?
  • 增量更新是怎么一个过程?
  • 我们之前的增量更新实践遇到了什么问题?
  • 更高性能的可能方案。
  • 换语言,选择 Go 带来了什么?
  • 如何面对海量突发流量?
  • 如何容灾?

作者简介:洋河,2013年加入携程 UED 实习,参与研发了人生中第一个星数超过100的 GitHub 开源项目。2014年加入小米云平台,同时负责网页前端开发、客户端开发及路由器固件开发,积累了丰富的端开发经验。2017年加入美团,现负责金服平台基础组件的开发工作。

413 人已订阅
免费订阅
关注提示×
扫码关注公众号,获得 Chat 最新进展通知!
入群与作者交流×
扫码后回复关键字 入群
Chat·作者交流群
入群码
该二维码永久有效
严选标准
知道了
Chat 状态详情
开始预订
预订结果公布18.07.12

预订达标,作者开始写作

审核未达标,本场 Chat 终止

作者文章审核结果公布18.07.24

审核达标,文章发布

审核未达标,本场 Chat 终止

Chat 完结
×
已购列表