InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Google号召社区力量为互联网加速

作者 Abel Avram 译者 霍泰稳 发布于 2009年7月5日

领域
架构 & 设计,
运维 & 基础架构,
语言 & 开发
主题
互联网 ,
性能和可伸缩性 ,
架构
标签
Google ,
社区

在几周前将网页加速工具开源后,Google又发布了一个网站,意在探寻更多的方法,并推动全互联网的加速进程。这次Google分享了研究数据、网站加速优化指南、有关性能的录制视屏、大量性能优化工具的介绍,以及一个讨论组,期望所有人都能在此分享如何使网页更快的创意。

Google研究部门针对网页装载速度如何影响用户的搜索结果做了一个研究,在数据响应阶段他们引入了几个可控的延迟:

gr1

在引入这些可控延迟,并对用户监视了4-6周之后,他们在搜索结果数字中发现了如下问题:

image

虽然0.5%的损失对一般人并不意味着什么,但是Google确信这样的损失对他们来说意味深远,因为在用户执行搜索的数字、广告点击显示的数字以及收入之间有着直接的关联。除了加速自己的Web服务器,考虑到这样做对其他人也有着积极的作用,Google还想加速全部互联网。

Google认为,除了带宽限制,还有其他多方面的因素导致了互联网的慢速:

  • 在Web开发中,网站没有遵循最佳实践,导致不必要的慢速;
  • Web服务器经常没有专为速度而优化;
  • 几个互联网协议是在10年或者15年之前设计的,那时候的网站和Web应用和现在大不相同;
  • 浏览器也是最近才开始关注速度,很多互联网用户还在使用慢速的浏览器。

那么对Google来说,互联网速度应该快到什么程度?从一页导航到另一页的速度应该和翻一页杂志的速度相当;允许视频和图像内容尽可能快;用户之间的实时协作不能因链接而延迟,包括移动用户等。等等这些,Google想看到HTML得到优化,这一点在HTML 5里也已经得到体现,但是他们还希望优化甚至用一些更好的东西改变HTTP和TCP。然而,考虑到要在目前的基础设施中做这样巨大的投资,这个改变还相当难以实现。

为了指导其他人如何加速他们的网站,Google提供了如下一些指南:

他们还从各种信息源收集到以下一些工具:

  • Page Speed(网页加速工具):这是一个开源的Firefox/Firebug插件。网站管理人员和Web开发人员可以使用网页加速工具估算自己网页的性能,并得到如何优化这些网页的建议。
  • AOL Page Test(AOL网页测试):这是一个用来测量和分析使用IE时网页性能的开源工具。
  • Cuzillion:该工具能够快速构建网页,并发现组件如何交互。每天,浏览器都会有各种无法预料的行为,有时因为浏览器不同,行为也各异。Cuzillion能够让你发现这些行为,并和其他人分享示例网页。
  • Fiddler 2:这是一个Web调试代理工具,能够记录计算机和互联网之间的所有HTTP流量。Fiddler让你能够监测到所有HTTP流量,设置断点,虚拟流入和流出数据。Fiddler有一个强大的基于事件的脚本子系统,能够使用任何.NET语言进行扩展。
  • Firebug:Firebug和Firefox相集成,让你在浏览网页时就能使用多个开发工具。你可以编辑、调试、监视任何Web页面的CSS、HTML和JavaScript代码。
  • Hammerhead:Hammerhead给Firebug增加了一个Tab,用来测量网页的装载时间。
  • httperf:这个工具能够用来测量Web服务性能。它提供了一个用来创建不同HTTP工作量和测量服务器性能的功能。Httperf的重点不是实现一个特定的标准,而是提供一个自动的、高性能的工具,以帮助构建微观和宏观层面的标准。
  • HttpWatch:这是一个HTTP浏览器和调试器,和IE以及Firefox相集成,在浏览器窗口的配合下,对HTTP和HTTPS进行无缝监视。
  • IBM Page Detailer(IBM网页设计器):一个图形工具,让Web站点开发人员和编辑快速而准确地从客户角度估算网页性能。IBM网页设计器提供了网页从何处被传递到Web浏览器的行为细节。这些细节包括时间、大小,以及一个网页中每个条目的身份。
  • JSLint:一个JavaScript项目,用来查找JavaScript程序中的错误,是一个代码质量工具。
  • JSMin:一个过滤器,可以从JavaScript文件中清除评论和不必要的空白。
  • Microsoft VRTA(Visual Round Trip Analyzer):VRTA工具帮助Web开发人员和测试人员可视化网页下载、寻找最佳实践和改变,以优化Web性能。VRTA检查通讯协议、定位往返过多的原因,以及推荐的解决方案等。
  • mon.itor.us:提供个性化的Ajax仪表盘界面,检查服务器性能和有效性,创建运行时间报告,跟踪访问者,检查CPU、内存和其他系统资源,并在监测到异常时给用户报警。
  • OOCSS:允许开发者撰写快速、可维护、基于标准的前台后台代码。
  • Pylot:一个用来测试Web服务性能和可扩展性的开源工具。它运行HTTP载入测试,这在容量规划、标准、分析和系统调整时都很有作用。Pylot生成并发载入(HTTP请求)、验证服务器响应和产生数据报告。
  • Smush It:使用图像格式特定无损图像优化工具,挤出你图像中的所有冗余字节——还不改变他们的外观和可视质量。通过优化图像,你可以得到一个所节省字节多少的报告,所有修改的图片也可以作为一个单一zip包下载。
  • Wbox:该工具意在当你测试HTTP相关文件时,能够多些乐趣。用它可以执行很多任务,包括:为Web应用、Web服务生成内容所用的时间,Web应用负载,无需改变本地解析器测试虚拟主机配置,在发出正确的HTTP代码的情况下检查重定向是否工作正常,测试HTTP压缩是否正常工作以及是否让服务器页面更快,将其作为一个配置少的HTTP服务器来分享文件。
  • Yahoo! YSlow:用来分析网页,并基于一套高性能Web页的规则,给出提高性能的方法。YSlow是一个Firefox插件,和Firebug Web开发工具相集成。
  • YUI Compressor:一个JavaScript压缩器,用来生产比其他大多数工具更高压缩比的文件。

最后,Google加速网站包含了一个讨论组,任何人都可以在此分享他们的技术和创意,以用来加快网页的访问速度。

InfoQ网站上相关内容链接:Google开源网页加速工具Page Speed

查看英文原文:Google Calls for a Joint Effort to Speed Up the Internet

译者 霍泰稳 是InfoQ中文站的联合创始人兼总编辑,有多年的软件开发经验和媒体从业经历。

Google的号召力真是强 发表人 Zhao Jeffrey 发表于
这篇文章不少货。支持一下。 发表人 xiao deshi 发表于
  1. 返回顶部

    Google的号召力真是强

    发表人 Zhao Jeffrey

    yahoo当年的活动就没有那么热烈。
    当然,客观的说,google提出的东西的确是更完整的。

  2. 返回顶部

    这篇文章不少货。支持一下。

    发表人 xiao deshi

    细心总结,虚心学习

深度内容

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。

解析JDK 7的动态类型语言支持

随着JDK 7的发布,字节码指令集终于迎来了第一位新成员——invokedynamic指令。这条新增加的指令是JDK 7实现“动态类型语言(Dynamically Typed Language)”支持而进行的改进之一,也是为JDK 8可以顺利实现Lambda表达式做技术准备。在这篇文章中,我们将去了解JDK 7这项新特性的出现前因后果和它的意义。

Java Remoting远程服务(下)

随着互联网应用的发展,Java分布式远程服务技术受到越来越多的关注,本文将对各种相关实现以示例的形式逐一介绍,并总结其中的优缺点,使读者能够在技术选型时有所准备。这是文章的下篇。