科技>计算机>网络与互联网
高性能网站建设进阶指南:Web开发者性能优化最佳实践

高性能网站建设进阶指南:Web开发者性能优化最佳实践"

作者:口碑网前端团队
ISBN:9787121258862
定价:¥65.0
字数:356千字
页数:256
出版时间:2015-05
开本:16(178*233)
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书是《高性能网站建设指南》姊妹篇。作者Steve Souders是前Google Web性能布道者和前Yahoo!首席性能工程师。在本书中Souders与8位专家分享了提升网站性能的最佳实践和实用建议,主要包括:理解Ajax性能,编写高效的JavaScript,创建快速响应的应用程序和无阻塞加载脚本,跨域共享资源,无损压缩图片大小,使用块编码加快网页渲染,避免或取代iframe的方法,简化CSS选择符,以及其他技术。

前言

O’Reilly Media, Inc.介绍 O’Reilly Media通过图书、杂志、在线服务、调查研究和会议等方式传播创新知识。自1978年开始,O’Reilly一直都是前沿发展的见证者和推动者。超级极客们正在开创着未来,而我们关注真正重要的技术趋势——通过放大那些“细微的信号”来刺激社会对新科技的应用。作为技术社区中活跃的参与者,O’Reilly的发展充满了对创新的倡导、创造和发扬光大。 O’Reilly为软件开发人员带来革命性的“动物书”;创建第一个商业网站(GNN);组织了影响深远的开放源代码峰会,以至于开源软件运动以此命名;创立了Make杂志,从而成为DIY革命的主要先锋;公司一如既往地通过多种形式缔结信息与人的纽带。O’Reilly的会议和峰会集聚了众多超级极客和高瞻远瞩的商业领袖,共同描绘出开创新产业的革命性思想。作为技术人士获取信息的选择,O’Reilly现在还将先锋专家的知识传递给普通的计算机用户。无论是通过书籍出版、在线服务或者面授课程,每一项O’Reilly的产品都反映了公司不可动摇的理念——信息是激发创新的力量。 业界评论 “O’Reilly Radar博客有口皆碑。” ——Wired “O’Reilly凭借一系列(真希望当初我也想到了)非凡想法建立了数百万美元的业务。” ——Business 2.0 “O’Reilly Conference是聚集关键思想领袖的绝对典范。” ——CRN “一本O’Reilly的书就代表一个有用、有前途、需要学习的主题。” ——Irish Times “Tim是位特立独行的商人,他不光放眼于最长远、最广阔的视野并且切实地按照Yogi Berra的建议去做了:‘如果你在路上遇到岔路口,走小路(岔路)。’回顾过去Tim似乎每一次都选择了小路,而且有几次都是一闪即逝的机会,尽管大路也不错。” ——Linux Journal 译者序 “信息网络的扩展正在为我们的星球建立一个新的神经系统”,而Web正是我们与这个系统对接的最重要平台。现在,信息与用户量在Web平台上呈爆炸式增长,用户与Web界面的交互越来越复杂,会话时间也越来越长,速度已经成为Web产品使用体验好坏和市场成败的最重要指标之一。在Google,网页呈现速度慢500毫秒将丢失20%的流量;在Yahoo!,慢400毫秒将丢失5%~9%的流量;在Amazon,慢100毫秒将丢失1%的交易量……反之,网站速度越快,越有利于用户汇聚、流量增长及交易量的上升。所以作为Web开发者,我们不能满足现状,要让网页变得更快更好。 本书作者Steve Souders在他上一部震惊业界的大作《高性能网站建设指南》中告诉我们,Web的80%~90%的性能由前端决定,并为提升Web性能设置了14条规则。本书中,Souders与8位Web开发界顶级大牛通力合作,一起向我们传授让网站速度更快的思想和原则,以及相应的技术和工具。它是上一部作品的进阶之作,如果说上一部作品使Web开发者有机会实现高性能的网站以满足当前用户的需要,那么本书将帮助我们立足现在,更着眼于未来,实现超出用户期望的速度体验。 Web的高速发展让开发者应接不暇,开发者应该把智慧、时间和精力放在用户最需要的地方,因此在做性能优化时不能盲目行动、抓小放大,需要事前有效评估找到重点,事后建立监控和保证机制,把有规律的、重复的、精确的工作交给机器去做。9位大牛把众多的思想、原则、方法和自动化工具融汇到这本书中,让Web开发者有机会站在巨人的肩上,借助于全球业界的最新成果,用自己的智慧、行动和坚持开发出令人赞叹的Web产品来。 如果你稍加留心就会发现,这两本书副标题的变化很有趣,第一本书的副标题是“前端工程师技能精髓”,而本书的是“Web开发者性能优化最佳实践”。Web性能优化不只是前端工程师的工作,而是需要所有Web开发者协作完成。在实际工作中,如果没有人关注Web性能,那么,不管我们作为Web开发者的哪种角色都应该挺身而出勇于担当,不仅要担当建设高速网站的责任,还要担当Web性能优化的布道义务,团结一切可以团结的力量。这是我们所有Web开发者的使命。之前在口碑网我们已经开始这样做了,前端工程师与对此有兴趣的后端工程师和产品经理一起组建了一个虚拟的Web性能优化团队,在完成工作之余,一起学习、研究、分享、布道和推动性能优化项目。虽然刚刚开始,但是已经有了一些令人欣喜的成果,这就是团结的力量。 本书由口碑网前端团队的鄢学鹍(三七)、郑旭东(正旭)、刘志涛(钨龙)、崔明达(灵佑)和姜凡(展炎)协作译成。翻译的过程也是自我学习、应用实践和总结提升的过程,我们深感本书的博大精深,同时也感到自己知识面的浅薄狭窄。我们把在学习和实践本书思想及方法过程中收获的心得和相关资料作为译注补充在译文中,希望会对大家有所帮助。我们深信学习本书正是学习大牛思想、提升专业技能的最好途径之一,把它的精华最精确地传递给每位读者是我们现在的想法和最大动力。 感谢电子工业出版社博文视点公司引进如此高品质的图书,让中国的Web开发者可以从中受益,进而为更多用户提供更快速的Web使用体验。除了封面上列出的译者外,还有很多人为翻译这本书倾注了智慧和汗水。可爱的同事林枝萍(般若)、高嘉峻(伯灵)、全鑫(泉心)、闻明(阿苏)、沙峰(善朋)、曾焕数(合沙)、王维锋(元天)、严斌锋(邦彦)、何莹莹(冰浠)、周炼(灵落)等,给了我们热情的建议和细心的校对,有效地提升了本书的品质。要特别感谢淘宝网前端团队的赵泽欣(小马)、王保平(玉伯)和郑叶飞(圆心)3位同学,他们在百忙之中帮我们校对重要章节,解决疑难问题。如果没有家人和同伴的支持,是很难做好翻译工作的,在此向所有关心和支持我们的朋友表示衷心的感谢! 口碑网前端团队 三七 正旭 钨龙 灵佑 展炎 于杭州 致谢 Credits 本书中有6个章节是由以下几位作者完成的。 Dion Almaer是Ajax社区的先驱Ajaxian.com的创建人之一,目前在Mozilla领导一个新团队研发基于Web的开发者工具(译注1,他已为之努力多年。在这本书里他与老搭档Ben Galbraith再次合作,无论是之前在Ajaxian还是在现在的Mozilla(译注2,他俩一直合作得很愉快。自Gopher协议发布以来,Dion编写过相当多的Web应用程序,经常在世界各地演讲,发表了大量文章并出版过一本书。当然你也可以去阅读他的博客(http://almaer.com/blog),那儿有更多内容,你甚至能了解他的生活及对世界的思考。 Douglas Crockford出生于明尼苏达州,6个月后因无法忍受当地的严寒而被家人带离该州。 Douglas自发现计算机这好玩意儿后就抛弃了原本很有前途的电视机研发职业。他爱好广泛、博学多才,涉足过学习系统、小型商务系统、办公自动化、游戏、互动音乐、多媒体、移动娱乐、社会化系统和编程语言等多个领域。出人意料的是他还发明了史上最烂编程语言——Tilton。他最为人知的贡献是发掘了JavaScript的精华部分,这非常重要,却也让人意想不到。他的另一重大贡献是发现数据交换格式JSON(JavaScript Object Notation,http://www.json.org/json-zh.html)。他正致力于将网络变成安全可靠的软件分发平台,并已着手实施这一计划。 Ben Galbraith是Mozilla开发者工具的联合总监,也是Ajaxian.com的创建人。Ben对商业和技术一直都极感兴趣,6岁那年就写出了他的第一个计算机程序,10岁开创第一个商业项目,12岁投身于IT业。他在世界范围内开展了数百次的技术演讲,组织过多场技术研讨会,并与他人合著图书超过6本。Ben的职业生涯也相当精彩丰富,从商业管理到技术工作,从CEO、CIO、CTO到首席软件设计师,从医疗、出版、媒体、制造业、广告到软件产业,角色众多,从业甚广。现在他和妻子及5个孩子住在加州的Palo Alto。 Tony Gentilcore是Google公司的软件工程师,Google首页和搜索结果页能快速呈现在用户面前就是他的杰作。他认为编写Web性能工具和研究相关技术是件非常愉悦的事。Tony也是广受欢迎的Firefox扩展的开发者。 Dylan Schiemann是SitePen.com的CEO,也是Dojo工具包的编写者之一,还是开放网络(Open Web)的技术和分析专家。Dojo是一个开源的用于快速构建Web站点和应用的JavaScript工具包。在他的引导下,SitePen从一个小型研发公司成长为如今业界领先的开发工具供应商,拥有众多资深软件工程师,为用户提供专业的咨询服务、一流的培训及外包业务。Dylan致力于研发的坚定信念已使SitePen成为诸如Dojo、cometD、Direct Web Remoting (DWR)和Persevere等开拓性开源Web开发工具包和框架的主要贡献者和创作者。在SitePen之前,他还为Renkoo、Informatica、Security FrameWorks和Vizional Technologies等公司开发过Web应用。他还是Comet Daily的合伙创始人及Dojo基金董事会成员和Aptana咨询委员会成员。Dylan在加州大学洛杉矶分校获物理化学硕士学位,在蒂尔大学取得数学学士学位。 Stoyan Stefanov是Yahoo!前端工程师译注 ,主要关注Web应用的性能。他也是性能扩展工具——YSlow2.0的架构设计师和Smush.it图像优化工具研发者之一。Stoyan同时还是演说家、作家(Packt出版社出版了他的Object-Oriented JavaScript),他的博客地址为http://phpied.com、http://jspatterns.com和YUIblog(http://yuiblog.com)。 Nicole Sullivan是一位Web技术的布道者、前端性能优化顾问和CSS专家。她创建了开源项目——面向对象的CSS(Object-Oriented CSS),它解决了如何规划CSS以应对成千上万的访问者的难题。Nicole还与W3C合作重新设计其测试版,也是Smush.it图像优化工具的研发者。她对CSS、Web标准和可扩展的大型商业网站前端架构充满激情。Nicole在世界各地的会议上发表关于性能优化的演讲。曾参加过的会议有The Ajax Experience、ParisWeb 和 Web Directions North等。她的博客是http://stubbornella.org。 Nicholas C. Zakas是Professional JavaScript for Web Developers(第二版,Wrox出版社,中文版《JavaScript高级程序设计》)的作者,也是Professional Ajax(第二版,Wrox出版社,中文版《Ajax高级程序设计》)的合著作者。Nicholas是Yahoo!主页的首席前端工程师并参与了YUI的开发译注 。他的博客地址是http://www.nczonline.net。 前言 Preface 警惕(Vigilant):警觉地关注,主要是为了避免危险。 任何人阅读了本书或其前传《高性能网站建设指南》,都会理解网站速度缓慢的危害性:饱受挫折的用户、负面的品牌认知、膨胀的运营开支及缩水的财务收益。我们必须不断努力使网站更快。当我们取得进步的时候,同时也意味着开始落后了。我们必须处处留心,每一次修复Bug、增加新功能和升级系统都可能对网站的速度产生影响。我们必须时时关注,今天实现的性能提升很可能明天就会失效。因此,必须保持警惕。 守夜(Vigil):节日的前一刻仍然保持警觉。 根据vigil的拉丁语义,守夜意味着我们应该保持警觉直到庆祝真正开始。网站的确可以变得更快,甚至飞快,我们可以为自己关心和专注所获得的成果庆祝。这是真的!使网站速度更快是可以实现的。本书介绍的技术已经让一些风靡全球的网站的加载时间减少了60%,它们同样也将造福小型网站,而最终使用户从中受益。 蜘蛛侠(Vigilante):自我任命的正义使者。 作为开发者,我们有责任去捍卫用户的利益。你应该在自己的网站上充当性能的布道者,实施这些技术,并与同事分享这本书,为更快的用户体验而战。如果你的公司没有人专门负责性能,那么任命自己来担当这种角色吧。性能蜘蛛侠——听起来很不错。 本书的内容结构 How This Book Is Organized 这本书是对我第一本书《高性能网站建设指南》(O'Reilly出版)的跟进。在那本书中,我为Web性能提升设置了14条规则。 规则1:减少HTTP请求。 规则2:使用内容发布网络。 规则3:添加Expires头。 规则4:采用Gzip压缩组件。 规则5:将样式表放在顶部。 规则6:将脚本放在底部。 规则7:避免CSS表达式。 规则8:使用外部的JavaScript和CSS。 规则9:减少DNS查询。 规则10:精简JavaScript。 规则11:避免重定向。 规则12:删除重复的脚本。 规则13:配置ETag。 规则14:使Ajax可缓存。 我称之为“规则”是因为它们易于实施。看看2007年3月美国十大网站(注1的统计数据: 两个站点使用CSS sprites。 26%的资源添加了Expires头。 5个站点压缩了HTML、JavaScript和CSS。 4个站点精简了JavaScript。 2009年4月的统计数据显示这些规则渐渐地获得了青睐: 9个站点使用了CSS sprites。 93%的资源添加了Expires头。 10个站点都压缩了HTML、JavaScript和CSS。 9个站点精简了JavaScript。 《高性能网站建设指南》中的规则现在依旧适用,并且大多数Web公司都应该从这些规则做起。我们已经有所进展,但在这套原始规则之上还有很多工作要做。 然而,Web没有停滞不前,我们必须迎头赶上。虽然《高性能网站建设指南》中的14条规则依旧适用,但网页内容和Web 2.0应用程序的增长带来了一系列新的性能挑战。本书提供了开发者所需的能为新一代网站提速的最佳实践。 本书的所有章节由3部分组成:JavaScript性能(第1~7章)、网络性能(第8~12章)和浏览器性能(第13~14章)。附录A介绍了一组最佳性能分析工具。 以下6章是由特约作者完成的: 第1章 理解Ajax性能,由Douglas Crockford完成。 第2章 创建快速响应的Web应用,由Ben Galbraith和Dion Almaer完成。 第7章 编写高效的JavaScript,由Nicholas C. Zakas完成。 第8章 可伸缩的Comet,由Dylan Schiemann完成。 第9章 超越Gzip压缩,由Tony Gentilcore完成。 第10章 图像优化,由Stoyan Stefanov 和Nicole Sullivan完成。 这些作者都是上述各个领域的专家,我想请你直接听听他们的声音。为了便于识别这些章节,我在每章的开头都注明了特约作者的名字。 JavaScript性能 JavaScript Performance 在对当今网站的分析中,我经常能体会到JavaScript是实现高性能Web应用程序的关键,所以我以如下章节作为本书的开始。 第1章理解Ajax性能由Douglas Crockford所著。Douglas介绍了Ajax如何改变浏览器和服务器的交互方式,以及开发者应如何理解这种新的关系才能恰当地抓住提升性能的时机。 第2章创建快速响应的Web应用是由 Ben Galbraith 和 Dion Almaer共同完成的,它使JavaScript性能提升回归到真正重要的事情上:用户体验。如今的Web应用程序在按钮点击事件发生后需要调用复杂的函数,必须根据浏览器需要完成的工作来评估Wed应用程序。如果一个程序员能理解程序代码和Web响应时间的关系,其将更容易编写成功的Web应用程序。 我编写了接下来的4章。它们都集中在处理JavaScript的机制上——封装和加载的最佳方式,以及将其插入页面的最佳位置。第3章拆分初始化负载介绍了当今许多Web应用程序面临的处境:在页面初始化时下载一个庞大的JavaScript,这不仅会阻塞渲染还会阻塞后续资源的下载。为了更高效的加载,对这个庞大的JavaScript进行拆分是关键。 第4章和第5章相辅相成。在眼下流行的浏览器中,外部脚本会阻塞页面中剩下的所有资源。第4章无阻塞加载脚本中介绍了在加载外部脚本时如何避开这些造成阻塞的陷阱。当行内脚本依赖外部脚本时,异步加载它们是一个挑战。幸运的是,有几种技术可以整合行内脚本和它们所依赖的异步加载的脚本。这些技术在第5章整合异步脚本中做介绍。第6章布置行内脚本介绍了应用行内脚本的最佳性能实践,特别是它们对并发加载的影响。 我认为Nicholas C. Zakas所写的第7章编写高效的JavaScript是Douglas所写的第1章的补充。Douglas介绍了Ajax的全貌,而Nicholas则专注于加速JavaScript的几种具体技术。 网络性能 Network Performance Web应用程序和桌面应用程序不同——每次使用它们时都必须通过互联网进行下载。Ajax的应用产生了一种服务端和客户端数据通信的新形式。毫不夸张地说,在一些互联网速度尚不理想的新兴市场中,Web产业还蕴含着一些巨大的增长机遇。所有这些因素都突显了提升网络性能的必要性。 在第8章可伸缩的Comet中,Dylan Schiemann介绍了一个超越Ajax的架构,它为诸如聊天和文档协助之类的实时应用提供了大容量、低延迟的实时连接。 第9章超越Gzip压缩介绍了为何打开Gzip压缩并不足以保证用最佳的方式发送网站内容。Tony Gentilcore 透露了一个鲜为人知的现象,全球有15%的互联网用户的网络性能因Gzip压缩无法使用而被严重降低。 Stoyan Stefanov和Nicole Sullivan联合贡献了第10章图像优化。它为该主题提供了彻底的解决方案。本章回顾了所有的流行图像格式,展现了很多图像优化技术,介绍了如何选择图像压缩工具。 剩下的章节由我完成。第11章划分主域提醒我们当今流行浏览器和下一代浏览器的连接限制。它包括了通过多个域来成功划分资源的技术。 第12章尽早刷新文档的输出全面地介绍了在完整的HTML文档到达之前使用块编码渲染页面的好处与缺陷。 浏览器性能 Browser Performance iframe是一种在网页中嵌入第三方内容的,方便且常用的技术,但它们也会带来开销。第13章少用iframe介绍了iframe的缺点并提供了一些替代方案。 第14章简化CSS选择符介绍了复杂选择符影响性能的原理,并在客观的分析后指出使用时最需要注意的情况。 附录A性能工具介绍了我推荐的用于分析网站和找出急需改进性能之处的工具。 本书约定 Conventions Used in This Book 本书使用下列排版约定: 等宽体(Constant width) 表示命令、选项、开关、变量、属性(attribute)、键值、函数、类型、类、名字空间、方法、模块、属性(property)、参数、值、对象、事件、事件处理程序、XML标签、HTML标签、宏、文件内容和命令的输出。 等宽粗体(Constant width bold) 表示实际中应由用户输入的命令或其他文本。 这个图标表示提示、建议或一般说明。 这个图标表示警告或提醒。 意见和问题 Comments and Questions 请将对本书的评价和存在的问题通过如下地址告知出版者。 美国: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 中国: 北京市西城区西直门南大街2号成铭大厦C座807室(100035) 奥莱利技术咨询(北京)有限公司 对于本书的评论或技术性的问题,请发送电子邮件到: bookquestions@oreilly.com 想了解关于O’Reilly图书、课程、会议和新闻的更多信息,请参阅我们的网站: http://www.oreilly.com http://www.oreilly.com.cn 与本书有关的在线信息如下所示: http://www.oreilly.com/catalog/9780596522308(原书) 代码示例 Using Code Examples 你可以直接在程序或者文档中使用本书提供的代码,无须与我们联系获得许可,除非复制大量的程序。例如,使用本书中的一些代码编写程序不需要得到许可,不过如果是想将O’Reilly书中的代码例子用于出售或复制光盘就必须获得许可。可以引用本书的内容或者代码样例来解决其他问题,但是在自己的产品文档中大量使用本书的代码样例需要事先得到许可。 我们会非常感谢你在引用本书时声明版权,虽然不是必需的。声明版权时通常要注明标题、作者、出版社以及ISBN序列号。例如:“Even Faster Web Sites, by Steve Souders. Copyright 2009 Steve Souders, 978-0-596-52230-8。” 如果你觉得自己对示例代码的使用超出了合理情况或上述许可的范围,请随时联系我们permissions@oreilly.com。 Safari® Books Online Safari Books Online是一家按需所取的数字图书馆,它同时提供来自世界各地领先的技术和业务作者的书籍和视频两种形式的专业内容。 专业技术人员、软件开发人员、网页设计师,以及商业和创意专业人士使用Safari联机丛书作为研究,是解决问题、学习和认证培训的主要资源。 Safari Books Online提供了一系列的产品组合和针对组织、政府机构和个人的定价方案。用户有机会在一个完全可搜索的数据库中访问成千上万的书籍、培训视频和即将出版的原稿,它们来自O’Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology以及大量其他出版商。有关Safari Books Online的更多详细信息,请访问我们的网站。 致谢 Acknowledgments 首先我要感谢本书的特约作者:Dion Almaer、Douglas Crockford、Ben Galbraith、Tony Gentilcore、Dylan Schiemann、Stoyan Stefanov、Nicole Sullivan和Nicholas C. Zakas。他们成就了这本特别的书。他们每个人都是极具实力的专家,其中大多数人都自己写过书。他们的宝贵经验,为我们带来了一些独特的好东西。 我要感谢所有的审阅者:Julien Lecomte、Matthew Russell、Bill Scott和Tenni Theurer。此外特别要感谢Eric Lawrence和Andy Oram。Eric校对了本书和《高性能网站建设指南》。他为两本书都提供了极其深入且专业的反馈。Andy是我的前一本书《高性能网站建设指南》的编辑,他负责改善本书,使每一句、每一节、每一章都畅通易读,相比别人而言他的工作可谓辛苦至极。 特别感谢我的编辑Mary Treseler。很多编辑都经历过与多位作者协作整理同一本书的挑战。我很高兴她接手了这个项目,并指导我们将大量想法顺利地呈现在你手上的这本书中。 在Google我与一群热爱研究Web性能的人一起工作。Tony Gentilcore是Fasterfox的创造者和第9章的作者。他也是我的同事,我们一天得讨论好几次关于Web性能的看法。Steve Lamm、Lindsey Simon和Annie Sullivan经常与我一同工作,他们热衷于性能优化。据我所知,其他对Web性能有贡献的“Google人”还有Jacob Hoffman-Andrews、Kyle Scholz、Steve Krulewitz、Matt Gundersen、Gavin Doughtie和Bryan McQuade。 本书中许多见解来源于我在Google以外的朋友。他们知道,如果给我一个改善性能的思路,这个思路很可能会见诸于一本书或一篇博文。这个性能亲友团成员包括Dion Almaer、Artur Bergman、Doug Crockford、Ben Galbraith、Eric Goldsmith、Jon Jenkins、Eric Lawrence、Mark Nottingham、Simon Perkins、John Resig、Alex Russell、Eric Schurman、Dylan Schiemann、Bill Scott、Jonas Sicking、Joseph Smarr和Tenni Theurer。 这份名单难以面面俱到,对此我感到很抱歉。感谢他们抽出宝贵时间给我发送电子邮件或在会议上和我交流,他们的经验教训与成功案例令我坚持下去,重要的是我知道了有这么多人都在致力于提高Web的速度。 谢谢我的父母,感谢你们一直以来为我是个作家而自豪。尤其要谢谢我的妻子和3个女儿,我向你们保证现在开始休假。

目录

目录 Table of contents 致谢 xiii 前言 xv 第1章 理解Ajax性能 1 权衡 1 优化原则 2 Ajax 4 浏览器 4 哇! 5 JavaScript 6 总结 6 第2章 创建快速响应的Web应用 7 怎样才算足够快 9 测量延迟时间 10 当延迟变得很严重时 12 线程处理 12 确保响应速度 13 Web Workers 14 Gears 14 定时器 16 内存使用对响应时间的影响 17 虚拟内存 18 内存问题的疑难解答 18 总结 19 第3章 拆分初始化负载 21 全部加载 21 通过拆分来节省下载量 22 寻找拆分 23 未定义标识符和竞争状态 24 个案研究:Google日历 25 第4章 无阻塞加载脚本 27 脚本阻塞并行下载 27 让脚本运行得更好 29 XHR Eval 29 XHR注入 31 Script in Iframe 31 Script DOM Element 32 Script Defer 33 document.write Script Tag 33 浏览器忙指示器 33 确保(或避免)按顺序执行 35 汇总结果 36 最佳方案 38 第5章 整合异步脚本 41 代码示例:menu.js 42 竞争状态 44 异步加载脚本时保持执行顺序 45 技术1:硬编码回调 46 技术2:Window Onload 47 技术3:定时器 48 技术4:Script Onload 49 技术5:降级使用script标签 50 多个外部脚本 52 Managed XHR 52 DOM Element和Doc Write 56 综合解决方案 59 单个脚本 59 多个脚本 60 现实互联网中的异步加载 63 Google分析和Dojo 63 YUI Loader 65 第6章 布置行内脚本 69 行内脚本阻塞并行下载 69 把行内脚本移至底部 70 异步启动执行脚本 71 使用script的defer属性 73 保持CSS和JavaScript的执行顺序 73 风险:把行内脚本放置在样式表之后 74 大部分下载都不阻塞行内脚本 74 样式表阻塞行内脚本 75 问题确曾发生 77 第7章 编写高效的JavaScript 79 管理作用域 79 使用局部变量 81 增长作用域链 83 高效的数据存取 85 流控制 88 快速条件判断 89 快速循环 93 字符串优化 99 字符串连接 99 裁剪字符串 100 避免运行时间过长的脚本 102 使用定时器挂起 103 用于挂起的定时器模式 105 总结 107 第8章 可伸缩的Comet 109 Comet工作原理 109 传输技术 111 轮询 111 长轮询 112 永久帧 113 XHR流 115 传输方式的前景 116 跨域 116 在应用程序上的执行效果 118 连接管理 118 测量性能 119 协议 119 总结 120 第9章 超越Gzip压缩 121 这为什么很重要 121 问题的根源 123 快速回顾 123 罪魁祸首 123 流行的乌龟窃听者实例 124 如何帮助这些用户 124 设计目标:最小化未压缩文件的尺寸 125 引导用户 129 对Gzip的支持进行直接探测 130 第10章 图像优化 133 两步实现简单图像优化 134 图像格式 135 背景 135 不同图像格式的特性 137 PNG的更多资料 139 自动无损图像优化 141 优化PNG格式的图像 142 剥离JPEG的元数据 143 将GIF转换成PNG 144 优化GIF动画 144 Smush.it 145 使用渐进JPEG格式来存储大图像 145 Alpha透明:避免使用AlphaImageLoader 146 Alpha透明度的效果 147 AlphaImageLoader 149 AlphaImageLoader的问题 150 渐进增强的PNG8 Alpha透明 151 优化Sprite 153 超级Sprite VS.模块化Sprite 154 高度优化的CSS Sprite 155 其他图像优化方法 155 避免对图像进行缩放 155 优化生成的图像 156 Favicons 157 Apple触摸图标 158 总结 159 第11章 划分主域 161 关键路径 161 谁在划分主域 163 降级到HTTP/1.0 165 域划分的扩展话题 168 IP地址和主机名 168 多少个域 168 如何划分资源 168 新型浏览器 169 第12章 尽早刷新文档的输出 171 刷新文档头部的输出 171 输出缓冲 173 块编码 175 刷新输出和Gzip压缩 176 其他障碍 177 刷新输出时的域阻塞 178 浏览器:最后的障碍 178 不借助PHP进行刷新输出 179 刷新输出问题清单 180 第13章 少用iframe 181 开销最高的DOM元素 181 iframe阻塞onload事件 182 使用iframe并行下载 184 脚本位于iframe之前 184 样式表位于iframe之前 185 样式表位于iframe之后 186 每个主机名的连接 187 iframe中的连接共享 187 跨标签页和窗口的连接共享 188 总结使用iframe的开销 190 第14章 简化CSS选择符 191 选择符的类型 191 ID选择符 192 类选择符 193 类型选择符 193 相邻兄弟选择符 193 子选择符 193 后代选择符 193 通配选择符 194 属性选择符 194 伪类和伪元素 194 高效CSS选择符的关键 194 最右边优先 195 编写高效的CSS选择符 195 CSS选择符性能 197 复杂的选择符影响性能(有时) 197 应避免使用的CSS选择符 200 回流时间 201 在现实中测量CSS选择符 202 附录A 性能工具 205 索引 221

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个