第1章WebPageTest内部原理 1
1.1函数拦截 2
1.2代码注入 2
1.3决定浏览器架构 3
1.4获取代码 4
1.5浏览器的发展 4
第2章IocalStorage读取性能 5
2.1基准测试 6
2.2这是怎么回事 6
2.3优化策略 7
2.4跟进 8
第3章 内联不是万能的 10
3.1没有浏览器缓存 10
3.2没有边缘缓存 11
3.3没有按需加载 12
3.4浏览器预加载失效 13
3.5不完美的方案:只在第一次访问时采用内联方式 13
3.6总结和建议 14
第4章 加载异步脚本的艺术 16
4.1 Facebook插件JS SDK 16
4.2设计原则和标准 18
4.3代码片段 18
4.4插入脚本的其他方案 20
4.5终于 21
4.6我们遗漏了什么 21
4.7如果我是代码片段的使用者 22
4.8离别感言:站在巨人的肩膀上 22
第5章 运营商网络:钻进兔子洞 24
5.1多样化 24
5.2延迟 25
5.3编码变换 25
5.4这是一座金山 26
5.5 4G也不能拯救我们 26
5.6我们要去向何方 27
5.7隧道尽头的光 27
第6章HTTP并行化 29
6.1介绍:滚下楼梯 29
6.2目前最佳实践:绕过HTTP 30
6.3实验:深入研究HTTP Archive 31
6.4结果:大量的连续请求序列 32
6.5推荐:是时候修改协议了 32
第7章 自动化网站性能优化 34
第8章 前端单点故障 36
8.1 Business Insider网站 36
8.2 CNET网站 37
8.3 O’Reilly Radar网站 39
8.4引起前端单点故障的原因 40
8.5避免前端单点故障 41
8.6行动起来 41
第9章 关于YSlow 43
第10章 高性能原生移动应用 46
10.1注意你的瀑布流 47
10.2压缩这些资源 47
10.3不要重复下载 48
10.4太多图片会减慢你的速度么 49
10.5后记 50
第11章纯CSS3图片?哼,也许晚点再说吧 51
11.1挑战 51
11.2动手写CSS3 52
11.3跨浏览器效果 52
11.4基准测试 54
11.4.1加载成本 55
11.4.2渲染 55
11.5达到我们的目标了么 57
11.6附录:代码目录 57
11.6.1 HTML 57
11.6.2 css 59
第12章Android中下载无用背景图片 63
12.1 Android下的问题 63
12.2无法解决 64
第13章 网络计时 65
第14章 我对HTTP的理解/思考 71
14.1 icy 71
14.2一些细节 71
14.3演练 71
14.4待办事项 77
14.5前进道路 80
14.6我想要的圣诞礼物 80
第15章 使用智能缓存避免机器人性能开销 81
第16章 导航计时API实践 84
16.1为什么要关心这些 84
16.2收集导航计时时间戳并将它们转为有用的度量值 85
16.3使用Google分析作为性能数据仓库 85
16.4 Google分析中的性能报告 86
16.5限制 86
16.6最后的思考 87
第17章 响应时间对业务的影响 88
第18章 考虑移动界面的性能 91
18.1电池寿命 91
18.2延迟 92
18.3嵌入CSS和JS:最佳实践 92
18.4内存 94
18.4.1优化图片 95
18.4.2权衡CSS的好处 96
18.4.3 GPU的好处及陷阱 96
18.4.4视口:眼不见,心还是得为它“烦” 97
18.4.5最小化DOM 97
18.5 UI响应 97
18.6总结 98
第19章 别再浪费时间使用Google Analytics的站点速度报告了 99
19.1问题:Firefox中关于Navigation Timing API的一个bug 99
19.2解决方案:在Google Analytics中滤除Firefox的时间 100
19.3好消息:这个bug已在Firefox 9中修复 101
19.4结语 101
第20章 超越Web开发者工具:Strace 102
20.1其他平台怎么办 102
20.2开始 103
20.3校正 103
20.4示例:本地存储 103
20.5我们才刚触及皮毛 104
第21章mod_spdy介绍:ApacheHTTPServer的SPDY模块 105
21.1 mod_ spdy入门 105
21.2 SPDY和Apache 105
21.3帮助改进mod_spdy 107
第22章CommonJS模块的惰性求值 108
22.1深入理解Text/JavaScript类型 108
22.2懒加载 110
22.3用延迟执行来挽救 110
22.4在CommonJS模块中创建懒执行 112
第23章 关于接受建议的建议 114
第24章 为什么你对性能测试结果的解读可能是错误的(至少你在大公司里工作) 118
24.1测试方法 119
24.2测试结果 119
24.3结论 120
24.4为什么这个问题如此重要 120
24.5几个重要的点 120
第25章 有损图像压缩 122
第26章 基于Selenium和JavaScript的性能测试 126
26.1记录数据 127
26.2收集和分析数据 128
26.3示例结果 129
26.4帮助/益处 130
26.5结束语 130
26.6致谢 131
第27章 一个评估网站性能的简单方法 132
27.1概念 132
27.2优势 133
27.3局限 133
27.4结束语 134
第28章 超越带宽:UI性能 135
28.1引言 135
28.2页面加载后:UI层 136
28.3 UI性能分析工具 136
28.4 CSS压力测试 136
28.5 CSS性能分析器 137
28.6 CSS Lint 137
28.7 DOM Monster 137
28.8对速度的感知/速度感 138
28.9花絮 138
28.10呼吁关注UI性能 139
第29章CSS Selector性能改变了(变得更好了) 141
29.1样式共享(Style Sharing) 142
29.2规则哈希(Rule Hashes) 142
29.3父过滤器(Ancestor filters) 142
29.4快速路径(Fast Path) 143
29.5还有什么仍然很慢呢 143
第30章 大胆尝试PhantomJS和confess.js 145
30.1性能概要 145
30.2应用程序缓存清单(App Cache Manifest) 147
30.3发展和完善 148
第31章 两次测量一次优化 149
31.1识别需要优化的页面/部分 150
31.2识别需要优化的功能 151
31.3优化 151
第32章 后端问题检测 153
32.1适当的后端时间该是多少 154
32.2搞清楚是怎么回事 155
32.3修复 158
32.4最后 158
第33章Web字体性能:@font-face及其他解决方案间的权衡 159
33.1字体托管服务与自主开发 159
33.1.1字体托管服务 159
33.1.2 DIY方式 160
33.2 FOUT是什么 160
33.3移除多余的字体字形 161
33.4 JavaScript字体加载器 162
33.5 Boot.getFont介绍:一种快速、小巧的Web字体加载器 163
33.6 Gentlefonts,启动你的引擎 164
33.7我的观察 168
33.8一些想法 168