设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

速度为王:Google+开发团队分享经验

2011-12-1 17:43| 发布者: joejoe0332| 查看: 12552| 评论: 1|原作者: 外刊IT评论|来自: 外刊IT评论

摘要:   本文是从Mark Knichel这篇文章翻译而来。   大家好,我是Google+基础架构团队的工程师。早在7月份,当Joseph Smarr开发出了Ask Me Anything栏目后,很多人都想知道一些关于Google+技术架构方面的信息。我们几 ...
  本文是从 Mark Knichel 这篇文章翻译而来。

  大家好,我是Google+基础架构团队的工程师。早在7月份,当Joseph Smarr开发出了Ask Me Anything栏目后,很多人都想知道一些关于Google+技术架构方面的信息。我们几个工程师觉得应该写一些关于这个题目的文章,给大家分享。

  对于Google+团队,我们头一个要认真处理的问题就是:页面生成速度。在谷歌,我们十分在意速度,下面就是我们用来提升速度的5项技术。

  1. 我们喜欢Closure

  我们喜欢Closure。非常的。我们使用Closure类库,模板以及编译器来生成Google+所有页面上的所有元素——包括驱动这些页面的JavaScript。但真正让我们获得速度的是以下几点:

— Closure模板即能用于Java也能用于JavaScript,生成的页面即能在Server端运行,也能在浏览器里运行。通过这种方式,内容总是能理解展现,我们还可以在后台加载JavaScript(“修饰”页面,在页面元素上挂载事件{敏感词})

— Closure能让我们在写JavaScript脚本时仍然可以享用严格的类型和错误检查,死代码清除,跨模块提示,以及其它的很多辅助优化便利。

  (访问 http://code.google.com/closure/ 来获取更多关于Closure的信息)

  2. 在正确的时间正确的使用JavaScript

  为了管理驱动Google+的JavaScript,我们把它分割成小的模块,这样可以异步的分别加载它们。你只需要下载最少的必须的模块。由两种技术来实现这些:

— 客户端保存历史浏览记录的信息(URL里的字符串信息代表这你当前处在某个页面上),用这种方法来调配JavaScript模块。

— 如果JavaScript没有加载完成,这个页面上的任何操作都会被禁止,直到加载完成。

这种技术框架也是Google+在客户端页面导航时避免重新加载页面的技术基础。

  3. 页面之间切换时避免刷新页面

  一旦JavaScript被加载,所有的页面内容都使用JavaScript生成,不需要再到服务器端去取,这样做效率更高些。我们设置了一个全局的{敏感词},监听所有标记的点击事件。如果允许的话,我们会把点击转化成页面内部的切换。如果条件不允许,客户端会生成这个页面,如果你在链接上使用鼠标中键或控制键的点击,我们会让浏览器按常规链接打开这个页面。

  页面上锚标记总是指向一个常规的URL(例如,你在HTML5里的历史记录里的URL),这样,你能容易的拷贝/分享这个页面链接。

  4. 部分(HTML)页面块刷新

  在客户端,一旦我们接收到部分数据,我们就立即生成这块内容,让它可见,不必等到整个页面加载后才能显示。

  为了实现这些,我们通过:

— 首次请求时,我们就把所有数据异步的取回

— 只有在需要生成这部分页面数据时,才会遇到延迟现象

  这种技术也能让我们尽早的加载CSS,JavaScript,图片以及其它资源,使网站更快,响应效果更好。


酷毙
2

雷人

鲜花

鸡蛋

漂亮

刚表态过的朋友 (2 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部