第1章 WebPageTest内部原理 1
1.1 函数拦截 2
1.2 代码注入 2
1.3 决定浏览器架构 3
1.4 获取代码 4
1.5 浏览器的发展 4
第2章 localStorage读取性能 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章 并行化 29
6.1 介绍:滚下楼梯 29
6.2 目前最佳实践:绕过 30
6.3 实验:深入研究 Archive 31
6.4 结果:大量的连续请求序列 32
6.5 推荐:是时候修改协议了 32
第7章 自动化网站性能优化 34
第8章 前端单点故障 36
8.1 Business Insider网站 36
8.2 ET网站 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章 我对的理解/思考 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介绍:Apache Server的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
· · · · · · (
收起)