前言 1
第1章 开始一个性能优化项目 9
开始性能提升 9
建立性能基准 11
设置网站性能目标 12
多方面的Drupal性能 13
创建按优先次序排序的改善列表 13
第2章 前端性能 16
限制HTTP请求 16
图像请求 19
缩小 20
压缩 21
可缓存标头 22
内容发布网络 22
保持最新的第三方库 22
外部脚本 23
单点故障 23
第3章 直接使用Drupal的性能 26
页面缓存 26
什么时候应该使用页面缓存? 27
CSS和JavaScript聚合 29
记录 31
缓存和其他可交换存储 31
克隆 31
视图 32
第4章 性能优化的Drupal编码 33
上下文问题 33
False优化 34
实体列表 35
高速缓存 37
队列和工作者 46
缓存抢占与竞争条件 47
第5章 关于深度莫测性能的Drupal编码 49
variable_set()滥用 49
外部请求 51
会话 52
过度的缓存间隔 52
PHP错误 54
代码库中的调试代码 54
开发设置 54
第6章 验证变化 55
前端性能分析 55
分析应用程序性能 58
第7章 架构设计与规划 76
横向和纵向扩展 76
服务分类 78
良好合作 79
两层配置示例 80
更大规模基础架构示例 82
开发与登录环境 83
内部网络布局 84
公用服务器 85
高可用性及故障转移 86
托管的注意事项 87
小结 88
第8章 服务监测 89
服务监测的重要性 89
Icinga监测警报 90
图形化监测数据 92
内部与远程监测 93
第9章 DevOps:打破开发和运营之间的壁垒 94
校正控制系统 94
配置管理系统 95
将Puppet和Git置于一起深入举例 96
开发虚拟机 98
部署工作流程 99
用Jenkins CI部署 102
第10章 多台网络服务器的文件存储 104
rsync 104
GlusterFS 105
单—NFS服务 106
高可用性的NFS聚合 106
存储区域网络 110
第11章 Drupal和云部署 112
什么是云? 112
为什么使用云? 112
架构开销 113
预打包的云 113
云部署的常见问题及处理方法 114
第12章 故障转移配置 115
IP故障转移与DNS故障转移 116
服务端问题 116
心跳 117
第13章 MySQL 120
Drupal和MySQL引擎 120
MySQL的版本 121
一般配置 122
复制 124
虚拟化部署 125
第14章 管理和监控MySQL的工具 127
Percona工具包 127
Openark工具包 128
My Sqlreport 129
Percona的监控插件 132
第15章 MySQL查询优化 133
索引基础 133
基表和连接顺序 134
常见问题 135
第16章 备用存储与后台缓存 138
缓存、锁定以及会话存储 139
深入Memcache 140
Memcache会对网站造成怎样的危害 144
实体/字段存储 145
第17章 Solr搜索 148
有关性能和可扩展性 148
Solr与Drupal的集成 149
Solr配置 149
索引内容 150
考虑架构 150
Solr复制 151
Drupal模块安装 152
第18章 PHP和httpd配置 153
APC:PHP操作码缓存 153
php.ini设置 155
PHP Apache模块与CGI 156
Apache MPM设置 157
Prefork线程设置 157
KeepAlive 159
Cache标头 160
记录日志 160
服务器签名 162
管理目录或虚拟主机 162
Nginx 163
第19章 反向代理和内容分发网络 165
在Drupal下使用反向代理 165
理解Varnish配置语言 167
Cookies和Varnish 174
为通过身份认证的用户缓存 174
Edge-Side Includes 175
服务过期的内容 175
错误页面 176
内存分配 177
记录日志及监控Varnish 178
Drupal的VCL示例 178
内容发布网络 182
第20章 负载测试 184
不同类型的负载测试 184
创建有效测试 185
何时测试 185
解读测试结果 186
负载测试期间的服务器监控 187
何处测试 188
使用JMeter负载测试示例 189
第21章 继续去哪里学习? 200
本书的官方网站 200
高性能Drupal组 200
Drupal Watchdog 200
用Git进行版本控制 201
Varnish 201
配置管理 201
Vagrant 201
Jenkins 201
MySQL性能 201
InnoDB索引结构 202