写点什么

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

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

关注

评论

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

趁着课余时间学点Python(三)变量,基本数据类型,运算符

ベ布小禅

8月日更

藏在煤箱中的文明:一个会说话的箱子能告诉我们什么?

脑极体

Linux 环境如何使用 kill 命令优雅停止 Java 服务

陈皮的JavaLib

Java Linux 面试 springboot 8月日更

Vue进阶(五):与 Vuex 的第一次接触

No Silver Bullet

Vue vuex 8月日更

NLP随笔(四)

毛显新

自然语言处理 神经网络 深度学习

编程的世界有点神奇

Nydia

2021Java进阶新篇章,狂刷1个月Java面试题

Geek_f90455

Java 程序员 面试 后端

小技巧 | Get 到一个 Web 自动化方案,绝了!

星安果

chrome 自动化 Web 插件 chrome扩展

前端之数据结构(一)

Augus

数据结构 8月日更

2021非科班生的Java面试之路,set集合

JVM调优资料

Java 程序员 面试 后端

Github标星5.3K,YGC问题排查,又让我涨姿势了

JVM调优资料

Java 程序员 面试 后端

IDEA下载及新建第一个Java项目(Helloworld)

Bob

8月日更

graphql计算指令之@skipBy和@includeBy:使用表达式实现简单控制流

杜艮魁

开源 后端 低代码 graphql

15个经典面试问题,如何设计一个百万级用户的抽奖系统?

Geek_f90455

Java 程序员 面试 后端

2021Java大厂高频面试题:Redis面试题及答案整理

Geek_f90455

Java 程序员 面试 后端

数据缓存历险记(二)--被过期键经理上了一课

卢卡多多

redis Redis键过期监听 8月日更

使用 Sequelize 快速构建 PostgreSQL 数据的 CRUD 操作

devpoint

node.js postgresql API 8月日更

12道Java高级面试题:瞧一瞧

Geek_f90455

Java 程序员 面试 后端

2021年您应该知道的技术之一!MySQL最全整理

Geek_f90455

Java 程序员 面试 后端

【设计模式】单例模式

Andy阿辉

编程 程序员 后端 设计模式 8月日更

【翻译】数据包的旅程 - 主机之间通信

luojiahu

计算机网络 OSI模型

2021Java面试笔试总结!Flutter中的widget

Geek_f90455

Java 程序员 面试 后端

Gin 介绍

xcbeyond

Go 语言 gin 8月日更

Dremio 推出在 AWS 云上运行的数据湖服务

水滴

数据湖 8月日更 Dremio

等待时间的忍受度

箭上有毒

8月日更

在线手机号码上标生成工具

入门小站

工具

「SQL数据分析系列」16. 分析函数

Databri_AI

sql 函数 分析

Linux之at命令

入门小站

Linux

2021Java面试总结!再见笨重的ELK

Geek_f90455

Java 程序员 面试 后端

2021必看!热榜!基于jsp

JVM调优资料

Java 程序员 面试 后端

2021程序员进阶宝典!Java程序员:

JVM调优资料

Java 程序员 面试 后端

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