AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

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

关注

评论

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

“ShardingCore”是如何针对分表下的分页进行优化的,深入理解linux内核架构

Java 程序员 后端

“数组&方法”常见知识分解,简述java编译原理

Java 程序员 后端

Zookeeper 集群部署的那些事儿,消息队列rabbitmq面试

Java 程序员 后端

zookeeper分布式锁,java开发技术教程

Java 程序员 后端

【C语言基础系列】C语言分支结构,java反射原理面试

Java 程序员 后端

Zookeeper用作注册中心的原理,张孝祥jsp视频教程

Java 程序员 后端

《Spring实战》读书笔记-第3章 高级装配,全网最具深度的三次握手、四次挥手讲解

Java 程序员 后端

yum安装ansible报错如何解决,自定义线程池面试题

Java 程序员 后端

“打工人”都在用的邮件使用规范,入职3个月的Java程序员面临转正

Java 程序员 后端

《JVM系列》 第五章 -- 堆空间与对象分配,springboot项目分层架构

Java 程序员 后端

【C语言】指针总结,Java程序员如何有效提升学习效率

Java 程序员 后端

“情商比智商重要”,java面试代码题

Java 程序员 后端

“穷苦乡村”小伙就得安于现状,你掌握了多少?

Java 程序员 后端

xxl-job 源码运行解析,java基础编程视频

Java 程序员 后端

《零基础》MySQL 安装(二),java高级程序设计作业系统

Java 程序员 后端

技术分享| RTC通讯中常用的音频格式

anyRTC开发者

音视频 WebRTC RTC 语音通话 音频格式

“一学就会”微服务的架构模式,一名毕业三年的女程序媛面试头条经验

Java 程序员 后端

《零基础》MySQL GROUP BY 语句(十九),java并发编程实战pdf百度云

Java 程序员 后端

zookeeper原理篇-Zookeeper选举过程分析,深入linux内核架构pdf下载

Java 程序员 后端

ZooKeeper实现生产-消费者队列,万字长文总结Java多进程

Java 程序员 后端

「JVM 系列」- JVM的类加载机制,java常用面试题和答案

Java 程序员 后端

ICCV 2021人脸鉴伪比赛全赛道冠军!AI反诈这块,百度算是弄明白了

科技热闻

《重构 改善既有代码的设计 3》代码的可理解性应该是我们虔诚追求的目标

Java 程序员 后端

XXL-Job启动源码详解,Java日常开发的12个坑,你踩过几个

Java 程序员 后端

zabbix监控nginx、mysql、java应用,64位java8百度云盘

Java 程序员 后端

《大型数据库技术》MySQL的进阶开发技巧,java基础知识重点总结pdf

Java 程序员 后端

《菜菜的机器学习sklearn课堂》逻辑回归,java教程百度云最新版

Java 程序员 后端

《零基础》MySQL 连接的使用(二十),springcloud开发教程

Java 程序员 后端

【C语言】动态内存分配,nginx调优与监控

Java 程序员 后端

WPF学习——依赖项属性,中软国际java面试流程

Java 程序员 后端

【终极预告】Apache ShardingSphere Dev Meetup 彩蛋篇

SphereEx

开源社区 ShardingSphere Meetup SphereEx 热门活动

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