阅读更多

24顶
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编写)检测是否缓存了过时文件并在必要时请求新版本的差量补丁,与缓存的文件合并完成更新。

图1. Diffable方法原理图(来源:Velocity 2010年会演讲资料

  性能优势

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

 


 

图2. Diffable方法在Google Maps应用的性能对比(来源:Velocity 2010年会演讲资料

 

  实现

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

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

 

  • 大小: 14.8 KB
  • 大小: 74 KB
来自: infoq
24
2
评论 共 11 条 请登录后发表评论
11 楼 rimoer 2012-11-01 11:33
想法很不错,真的。
10 楼 rubynroll 2010-08-16 05:34
ray_linn 写道
小打小闹的东西,script占据的不到页面内容的2%,像google map这种东西,首先还是本地缓存效率太低,flash client或者sliverlight client远比javascript操作顺畅。


同意这个观点,仅仅对script实施diffable意义有限。但要是能对页面中的所有内容进行diffable,效果将完全不一样。

我做过一个定制的系统(Web middle ware + customized browser),通过对资源进行CRC标注,大幅度减少HTTP请求,要是能再加上diffable,效果将更好。
9 楼 ray_linn 2010-08-15 08:54
小打小闹的东西,script占据的不到页面内容的2%,像google map这种东西,首先还是本地缓存效率太低,flash client或者sliverlight client远比javascript操作顺畅。
8 楼 treblesoftware 2010-08-15 07:16
nhyjq 写道
treblesoftware 写道
方法一提出,就要想办法变为标准,一旦标准是自己的,接下来就可以垄断。


有本事的话自己也可以搞个方法出来垄断一下啊。

不要以人家财宏势大为借口,有钱如盖茨大叔也垄断不了服务器的操作系统,渺小如芬兰某学生也能搞个垄断大半服务器的操作系统核心。


现在做技术垄断靠技术?

7 楼 fcrong 2010-08-14 21:13
对google这样的公司, gmail这样的应用有用
对其他的..... 没看出有多少价值
6 楼 ghyghoo8 2010-08-14 18:23
很好。。跟游戏补丁更新一样
5 楼 nhyjq 2010-08-14 18:12
treblesoftware 写道
方法一提出,就要想办法变为标准,一旦标准是自己的,接下来就可以垄断。


有本事的话自己也可以搞个方法出来垄断一下啊。

不要以人家财宏势大为借口,有钱如盖茨大叔也垄断不了服务器的操作系统,渺小如芬兰某学生也能搞个垄断大半服务器的操作系统核心。
4 楼 treblesoftware 2010-08-14 10:09
方法一提出,就要想办法变为标准,一旦标准是自己的,接下来就可以垄断。
3 楼 calvinlyc 2010-08-14 08:44
很好的idea,支持下
2 楼 unika_ly12 2010-08-14 08:30
恩,很棒的东西,可以尝试尝试
1 楼 mysoko 2010-08-13 15:51
不错  

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

Global site tag (gtag.js) - Google Analytics