QCon北京开幕在即|与全球 140+ 顶尖工程师共同解构 AI 时代的技术浪潮 了解详情
写点什么

Google 提出 Web 性能优化新方法——Diffable

  • 2010-08-12
  • 本文字数:692 字

    阅读完需:约 2 分钟

Google Maps 的开发人员 Josh 和 James 最近提出并实现了一种 Web 性能优化新方法—— Diffable ,即在浏览器加载 Web 页面时,促使其比较相关文件(Html、JavaScript 等)在服务器端和客户端缓存区的版本并只下载差量(Deltas),降低网络下载造成的延迟。本文简要介绍了 Diffable 方法的背景、原理、优势和实现情况。

背景

众所周知,Google Maps 是一款“重量级”的富互联网应用,主要 JavaScript 文件大小接近 300K,而一个平常的补丁更新只有不到 20K,这意味着如果用户的浏览器已经缓存了旧版本的 JavaScript 文件,那么在通常情况下,用户不得不下载多余的 280K(内容没有变化),页面加载速度就会受此影响。为了解决类似问题,Google Maps 的工程师提出了 Diffable 方法。

原理

Diffable 方法需要在服务器端和客户端同时实施,如图 1 所示。

  • 服务器组件记录网页相关文件版本更新的差量,以便在客户端需要时向其发送补丁以更新过时的缓存文件。
  • 客户端组件(采用 JavaScript 编写)检测是否缓存了过时文件并在必要时请求新版本的差量补丁,与缓存的文件合并完成更新。

性能优势

对于 Google Maps 来说,Diffable 方法节省了 1200 毫秒(减少页面加载时间的 25%),请注意这种方法只对已经缓存旧版页面文件的 Google Maps 用户有效,此类用户约占全部用户的 20%-25%,参见图 2 所示:

实现

Diffable 方法是一种 Web 性能优化思想,目前 Google 的开发人员已经针对 J2EE 应用完成了相应的开源实现,采用 Apache License 2.0 授权,具体细节可以参考以下文档:

感兴趣的朋友可以登陆 Diffable 开源项目官方网站了解更多详情。

2010-08-12 08:527938
用户头像

发布了 501 篇内容, 共 265.7 次阅读, 收获喜欢 61 次。

关注

评论

发布
暂无评论
发现更多内容

Webrtc video framerate/resolution自适应

webrtc developer

WebRTC

【LeetCode】密钥格式化Java题解

Albert

算法 LeetCode 10月月更

关心你的团队,这才是最有效的管理技巧

俞凡

管理 10月月更

005云原生之Service Mesh(Istio+Envoy)

穿过生命散发芬芳

云原生 10月月更

3. 有点难~ Python函数式编程中 itertools 模块

梦想橡皮擦

10月月更

网络流量分析场景浅谈

穿过生命散发芬芳

后端 引航计划 网络流量分析

MySQL性能分析和索引优化

程序员阿杜

MySQL

架构实战营模块九作业

老猎人

架构实战营

网络架构知识总结

十二万伏特皮卡丘

SpringMVC源码分析-HandlerAdapter(6)-ModelFactory组件分析

Brave

源码 springmvc 10月月更

一分钟搞懂SOLID原则

俞凡

架构 10月月更

深入理解Git submodules

俞凡

git 架构 10月月更

「绝密档案」“爆料”完整秒杀架构的设计到技术关键点的“八卦资料”

码界西柚

秒杀系统 秒杀架构 秒杀架构设计 web技术分析 10月月更

最短路径算法

Dobbykim

算法 图论

在线随机抛硬币工具

入门小站

工具

Go dlv <autogenerate> 代码定位

非晓为骁

源码分析 Go 语言 dlv rt0_go autogenerate

阿里开源的这个库,让 Excel 导出不再复杂(简简单单的写)

看山

Java EasyExcel 10月月更

第 10 章 -《Linux 一学就会》- centos8系统进程管理

学神来啦

Linux 运维 linux学习 linux云计算

计算架构模式之接口篇

十二万伏特皮卡丘

如何激励员工?

石云升

项目管理 管理 引航计划 内容合集 10月月更

团队管理之如何成为合格的TeamLeader

小诚信驿站

团队管理 管理 引航计划 内容合集

工业级高精度电磁流量计解决方案

不脱发的程序猿

ADI 工业高精度传感器 流量传感器 优秀论文期刊

006云原生之Service Mesh(Spring Cloud)

穿过生命散发芬芳

云原生 10月月更

如何画好架构图

十二万伏特皮卡丘

怎么给程序员做职业规划?

石云升

团队管理 管理 引航计划 内容合集 10月月更

linux之autojump命令

入门小站

Linux

【Flutter 专题】39 图解 iOS 打包 IPA 文件

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 10月月更

第 11 章 -《Linux 一学就会》- 重定向和文件的查找

学神来啦

Linux linux运维 linux学习 linux云计算

架构实战营 - 模块 9 - 设计电商秒杀系统

雪中亮

架构实战营 #架构实战营

【LeetCode】最长回文子串Java题解

Albert

算法 LeetCode 10月月更

容器 & 服务:Helm Charts(二)安装与使用

程序员架构进阶

Kubernetes 容器 Helm Helm Charts 10月月更

Google提出Web性能优化新方法——Diffable_Java_崔康_InfoQ精选文章