写点什么

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

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

关注

评论

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

吐司盒子?芝士码?HarmonyOS创新音视频测试技术来啦|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

搞定大厂算法面试之leetcode精讲4.贪心

全栈潇晨

LeetCode 算法面试

创建第一个微信小程序

坚果

微信小程序 11月日更

IoT 的概念、发展趋势与挑战

liuzhen007

11月日更

MySQL Workbench 使用教程 - 如何使用 Workbench 操作 MySQL / MariaDB 数据库中文指南

蒋川

MySQL MariaDB MySQL 数据库

SAP Cloud for Customer Extensibility的设计与实现

汪子熙

SAP abap C4C 11月日更

筹备两年,60万字诚意续作《腾讯游戏开发精粹Ⅱ》正式发布

博文视点Broadview

分析一个错误使用MemoryCache导致的BUG

喵叔

11月日更

IntelliJ IDEA 如何针对 Java 项目创建 H2 数据库连接

HoneyMoose

Junit 4 的 @Before 和 @BeforeClass 对比 Junit 5 @BeforeEach 和 @BeforeAll

HoneyMoose

🏆【Alibaba中间件技术系列】「RocketMQ技术专题」让我们一起探索一下DefaultMQPushConsumer的实现原理及源码分析

码界西柚

RocketMQ 11月日更 Apache RocketMQ DefaultMQPushConsumer

填坑总结:python内存泄漏排查小技巧

华为云开发者联盟

Python 内存 内存泄漏 回收 全局变量

dart系列之:在dart中使用数字和字符串

程序那些事

flutter dart 程序那些事 11月日更

linux下prometheus+grafana安装

小鲍侃java

11月日更

Chrome 插件特性及实战场景案例分析

vivo互联网技术

大前端 插件设计 chrome扩展

【死磕Java并发】-----J.U.C之AQS:CLH同步队列

chenssy

11月日更 死磕 Java 死磕 Java 并发

在线数值列表求和工具

入门小站

工具

美东某 IoT 公司技术流程第一轮沟通就挂了

HoneyMoose

Android C++系列:Linux进程(三)

轻口味

c++ android jni 11月日更

前端开发:数据处理方法分享(其一)

三掌柜

11月日更

Hibernate H2 数据库连接配置 URL 解读

HoneyMoose

如何让 Sublime Text 编辑器支持新的 ABAP 关键字

汪子熙

SAP abap 11月日更 Sublime

「Oracle」Oracle 数据库安装

恒生LIGHT云社区

数据库 oracle

spring的默认事务传播是什么?

卢卡多多

Spring Framework 事务传播行为 11月日更

关于HTTPS认证,这里解决你所有疑惑

华为云开发者联盟

https 证书 数据加密 认证 签发证书

“愚公移山”的方法解atoi,自以为巧妙!

老表

Python LeetCode 11月日更 算法与数据结构

有幸和美团大佬共同探讨单节点连接数超1.5W的问题

中间件兴趣圈

架构 微服务 11月日更

JavaScript 数组方法 splice() 的 3 个示例

devpoint

JavaScript splice 11月日更

云原生社区上线了

云原生

开源 云原生 技术社区 社区

一次谈不上有点内卷的美东某金融公司面试

HoneyMoose

linux之realpath命令

入门小站

Linux

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