9 月 13 日,2025 Inclusion・外滩大会「开源嘉年华」正在限量报名中! 了解详情
写点什么

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:528143
用户头像

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

关注

评论

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

旺链科技荣登“长三角产业区块链企业30强”!

旺链科技

区块链 产业区块链 创新应用

尹博学:OceanBase Cloud正式开服,助力全球中小企业数智化升级

OceanBase 数据库

袋鼠云思枢:数栈DTinsight,创新升级,全新出发,驶入数智转型新赛道

袋鼠云数栈

OceanBase&ChunJun联合Meetup丨邀您齐聚杭州,共享开源盛会

袋鼠云数栈

解析 RocketMQ 业务消息--“顺序消息”

阿里巴巴中间件

阿里云 RocketMQ 云原生 消息队列

浅谈 malloc 函数在单片机上的应用

矜辰所致

malloc 内存管理 8月月更

兆骑科创双创服务平台,留学生海外创新创业大赛,人才引进

兆骑科创凤阁

兆骑科创高层次人才引进服务平台,创业大赛,云路演

兆骑科创凤阁

全网独一份!清华大牛联合众多一线大厂架构师整合的Java面试突击手册开源

程序员小毕

程序员 程序人生 JVM 高并发 java面试

画出“伦勃朗光线”:vivo的夜色4K探索之旅

脑极体

MQTT协议详解及v5.0实践——实践类

阿里云AIoT

物联网 调度 网路协议 网络性能优化 网路架构

A tour of gRPC:08 - gRPC 反射 与 Evans 客户端

BUG侦探

gRPC RPC protocolBuffer

打补丁是什么意思?如何快速对云主机批量打补丁?用什么软件?

行云管家

运维 云主机 IT运维 打补丁

蛇行矩阵 蛇形填数 回形取数 蛇行系类(C语言详解+图解)

Five

c 算法题 8月月更

企业统一门户 | WorkPlus深度集成,优化企业管理模式

BeeWorks

IoT亿级设备接入层建设实践——实践类

阿里云AIoT

安全 网络协议 物联网 存储 网络架构

2022年中国小微信贷市场发展分析

易观分析

市场分析 小微信贷 易观

面试半月,阿里三面挂在微服务,我整个人直接麻了

Java永远的神

程序员 微服务 程序人生 Java 面试 架构师

兼具高效与易用,融云 IM 即时通讯长连接协议设计思路

融云 RongCloud

即时通讯 协议

基础+进阶+源码+实战,阿里SpringCloud Alibaba全解手册限时开源~

Java全栈架构师

程序员 面试 微服务 架构师 SpringCloud

万物皆可集成系列:低代码释放用友U8+深度价值(2)—数据拓展应用

葡萄城技术团队

低代码 用友

Python自学教程3-英语不好,变量怎么命名

和牛

Python 测试 8月月更

代码diff服务改进方案

转转技术团队

测试平台开发 codediff工具

开源交流丨批流一体数据集成框架ChunJun数据传输模块详解分享

袋鼠云数栈

2022年十大知名堡垒机品牌你真的知道吗?

行云管家

网络安全 数据安全 堡垒机 堡垒机品牌

自从外包干了七年,废了.....!

退休的汤姆

Java 面经 社招 Java工程师 秋招

大型LED显示屏怎样做好保养维护

Dylan

LED显示屏 led显示屏厂家

DPDK性能影响因素分析

C++后台开发

后台开发 虚拟化 DPDK VPP C++开发

IoT设备消息洪峰怎么扛? 阿里云AIoT消息队列深度解读——实践类

阿里云AIoT

nosql 算法 物联网 存储 消息中间件

企业即时通讯怎样为企业实现移动办公效率的极致化?

BeeWorks

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