本书专门讲解如何利用ASP.NET和SQL Server开发出高性能、高扩展性的网站,并结合具体的问题给出切实有效的解决方案。除了给出构建高性能网站的技巧,本书还针对应用涉及的所有层面(包括客户端、缓存、IIS 7、ASP.NET、线程、会话状态、SQL Server、分析服务、基础架构和运维)提供了大量建议和代码示例。
通过学习本书,你将学会如何处理以下问题。
如何应用关键原则构建出高性能、高扩展性的网站。
如何使用高性能技巧实现多方面提速。不仅加快Web页面显示速度,还要加快更改、修复、部署速度。
如何找出性能瓶颈(比如会话状态)以及如何避免这些瓶颈。
如何将书中技巧应用到具体实践,包括浏览器、网络缓存、后端操作、硬件架构以及软件部署过程。
第1章 原则和方法 1
1.1 性能和可扩展性的差异 2
1.2 为什么需要高性能和高可扩展性 2
1.2.1 优化 3
1.2.2 过程 3
1.2.3 体验 4
1.3 完整的页面处理过程 4
1.4 原则概述 6
1.4.1 性能原则 6
1.4.2 次要技术 7
1.5 本书使用的环境和工具 8
1.5.1 软件工具和版本 8
1.5.2 术语 9
1.5.3 排版约定 9
1.5.4 作者网站 9
1.6 小结 10
第2章 客户端性能 11
2.1 浏览器页面处理 12
2.1.1 网络连接和初始HTTP请求 12
2.1.2 页面解析和新的资源请求 13
2.1.3 页面资源的顺序以及重新排序 14
2.2 浏览器缓存 15
2.3 网络优化 16
2.4 脚本包含文件的处理 18
2.4.1 通过在脚本之前排队资源请求提高并行化 18
2.4.2 减少脚本文件的数量 19
2.4.3 在页面剩余时间里请求对象 21
2.4.4 脚本延迟 22
2.4.5 针对脚本的服务器端方法 22
2.5 少下载 22
2.5.1 减少每个页面中资源的数量 22
2.5.2 降低HTML、CSS和JavaScript的大小 24
2.5.3 最大化压缩 25
2.5.4 图片优化 25
2.5.5 网站图标文件 29
2.5.6 HTML、CSS和JavaScript的一般优化 29
2.6 使用JavaScript限定页面请求 32
2.6.1 提交按钮 33
2.6.2 链接 33
2.7 使用JavaScript降低HTML大小 34
2.7.1 生成重复的HTML 34
2.7.2 为标签添加重复文本 35
2.8 减少上传 36
2.9 CSS优化 38
2.10 图片精灵和集群 41
2.11 利用DHTML 43
2.12 使用Ajax 43
2.13 使用Silverlight 45
2.13.1 创建HTML控件 46
2.13.2 在JavaScript中调用Silverlight内代码 48
2.13.3 使用Silverlight改进性能的其他方式 49
2.14 提高呈现速度 50
2.15 预缓存 51
2.15.1 预缓存图片 51
2.15.2 预缓存CSS和JavaScript 52
2.16 使用CSS实现无表格的布局 53
2.17 优化JavaScript的性能 56
2.18 小结 57
第3章 缓存 59
3.1 在所有层中缓存 59
3.2 浏览器缓存 60
3.2.1 缓存静态内容 61
3.2.2 缓存动态内容 63
3.3 ViewState 65
3.4 Cookie 71
3.4.1 设置会话Cookie 71
3.4.2 单个Cookie中多个名称/值对 72
3.4.3 Cookie属性 72
3.5 Silverlight独立存储 80
3.5.1 示例程序:“欢迎回来” 80
3.5.2 部署并更新Silverlight应用 84
3.6 代理缓存 85
3.6.1 使用Cache-Control HTTP头 85
3.6.2 管理相同内容的不同版本 87
3.7 Web服务器缓存 87
3.7.1 Windows内核缓存 87
3.7.2 IIS 7输出缓存 92
3.7.3 ASP.NET输出缓存 93
3.7.4 ASP.NET对象缓存 98
3.8 SQL Server缓存 103
3.9 分布式缓存 104
3.10 缓存过期时间 105
3.10.1 动态内容 105
3.10.2 静态内容 105
3.11 小结 106
第4章 IIS 7 108
4.1 应用程序池和Web园 108
4.2 请求处理管道 110
4.3 Windows系统资源管理器 111
4.4 常见的HTTP问题 113
4.4.1 HTTP重定向 114
4.4.2 HTTP头 115
4.5 压缩 118
4.5.1 启用压缩 118
4.5.2 设置压缩选项 120
4.5.3 使用web.config配置压缩 121
4.5.4 缓存压缩的内容 121
4.5.5 使用编程方式启用压缩 122
4.6 HTTP Keep-Alive 122
4.7 优化URL 122
4.7.1 虚拟目录 123
4.7.2 URL重写 123
4.8 管理流量 126
4.8.1 使用robots.txt 126
4.8.2 网站地图 127
4.8.3 带宽节流 128
4.9 跟踪失败请求 130
4.10 IIS性能调校提示 133
4.11 小结 134
第5章 ASP.NET线程与会话 135
5.1 线程影响可扩展性 135
5.2 ASP.NET页面生命周期 136
5.3 应用程序线程池 137
5.3.1 同步页面 138
5.3.2 异步页面 138
5.3.3 负载测试 140
5.3.4 改进已有的同步页面的可扩展性 142
5.3.5 从单个页面上执行多个异步任务 143
5.3.6 超时处理 144
5.3.7 异步Web服务 145
5.3.8 异步文件I/O 148
5.3.9 异步Web请求 149
5.4 后台工作线程 151
5.4.1 使用后台线程记录日志 152
5.4.2 任务串行化 157
5.5 锁定指南和使用ReaderWriterLock 157
5.6 会话状态 158
5.6.1 会话ID 159
5.6.2 InProc模式 159
5.6.3 使用StateServer 160
5.6.4 使用SQL Server 160
5.6.5 有选择的启用会话状态,使用ReadOnly模式 161
5.6.6 可扩展性会话状态支持 162
5.6.7 调校 167
5.6.8 完全自定义会话状态 167
5.6.9 会话序列化 168
5.7 会话状态的其他方案 168
5.8 小结 169
第6章 使用ASP.NET实现和管理优化技术 170
6.1 母版页 170
6.2 用户控件 173
6.2.1 示例 173
6.2.2 注册和使用控件 175
6.2.3 将控件放在DLL中 175
6.3 主题 176
6.3.1 静态文件 176
6.3.2 皮肤 176
6.3.3 动态设定主题 176
6.3.4 可以放在主题里的属性 177
6.3.5 示例 178
6.3.6 预缓存主题图片 179
6.4 特定于浏览器的代码 179
6.4.1 使用Request.Browser 181
6.4.2 特定于浏览器属性前缀 182
6.4.3 缓存特定于浏览器的页面 183
6.4.4 控件适配器 184
6.4.5 浏览器提供程序 185
6.4.6 伪装 187
6.5 动态生成JavaScript和CSS 187
6.5.1 示例 188
6.5.2 从JavaScript里访问ASP.NET控件 189
6.6 给静态文件设置多个域名 190
6.7 修改图片大小 191
6.8 小结 193
第7章 管理ASP.NET应用程序策略 194
7.1 自定义HttpModule 194
7.1.1 示例HttpModule的需求 195
7.1.2 Init() 方法 195
7.1.3 PreRequestHandlerExecute事件处理器 197
7.1.4 BeginAuthenticateRequest事件处理器 197
7.1.5 EndAuthenticateRequest事件处理器 199
7.1.6 EndRequest事件处理器 200
7.1.7 数据库表和存储过程 201
7.1.8 在web.config中注册该HttpModule 202
7.2 自定义HttpHandler 202
7.2.1 开始请求 203
7.2.2 结束请求 204
7.3 页面基类 205
7.4 页面适配器 206
7.4.1 示例:PageStatePersister 206
7.4.2 PageAdapter类 207
7.4.3 注册PageAdapter 208
7.5 URL重写 208
7.5.1 在HttpModule中重写URL 208
7.5.2 修改表单使用重写的URL 209
7.6 标签转换 210
7.7 深入理解控件适配器 211
7.8 重定向 212
7.8.1 传统的重定向 212
7.8.2 永久重定向 213
7.8.3 使用Server.Transfer() 213
7.9 尽早刷新响应 214
7.9.1 标记 214
7.9.2 隐藏文件 214
7.9.3 包跟踪 215
7.9.4 块编码 216
7.9.5 小结 217
7.10 过滤空格 218
7.11 避免不必要工作的其他方法 220
7.11.1 检查Page.IsPostBack 220
7.11.2 确定页面是否刷新 220
7.11.3 避免在回发之后重定向 220
7.11.4 检查Response.IsClient- Connected 221
7.11.5 关闭调试模式 221
7.11.6 批量编译 222
7.12 小结 222
第8章 SQL Server关系数据库 224
8.1 SQL Server如何管理内存 224
8.1.1 内存组织 225
8.1.2 读和写 225
8.1.3 性能影响 226
8.2 存储过程 226
8.3 批量命令 228
8.3.1 使用SqlDataAdapter 228
8.3.2 构建参数化命令串 231
8.4 事务 233
8.5 多结果集 238
8.5.1 使用SqlDataReader. NextResult() 238
8.5.2 使用SqlDataAdapter和DataSet 239
8.6 数据预缓存 240
8.6.1 方法 240
8.6.2 预缓存基于表单的数据 241
8.6.3 预缓存每次一个页面的数据 241
8.7 数据访问层 242
8.8 查询和结构优化 243
8.9 其他查询优化指导原则 251
8.10 数据分页 251
8.10.1 公用表表达式 251
8.10.2 数据分页的详细示例 252
8.11 对象关系模型 258
8.12 XML列 259
8.12.1 XML架构 260
8.12.2 创建示例表 261
8.12.3 基本XML查询 262
8.12.4 修改XML数据 263
8.12.5 XML索引 263
8.12.6 其他XML查询技巧 264
8.13 数据分区 264
8.13.1 分区函数 265
8.13.2 分区架构 265
8.13.3 生成测试数据 266
8.13.4 添加索引,配置锁升级 268
8.13.5 存档旧数据 269
8.13.6 小结 269
8.14 全文搜索 269
8.14.1 创建全文目录和索引 270
8.14.2 全文查询 271
8.14.3 获得搜索分级的细节 271
8.14.4 全文搜索语法小结 271
8.15 Service Broker 272
8.15.1 启用和配置Service Broker 273
8.15.2 发送消息的存储过程 274
8.15.3 使用存储过程接收消息 274
8.15.4 测试示例 275
8.15.5 避免中毒消息 276
8.16 通过Service Broker发送E-mail 276
8.16.1 创建后台工作线程 277
8.16.2 读取并处理信息 278
8.16.3 排队消息和发送邮件的Web窗体 280
8.16.4 结果 282
8.17 数据变化通知 283
8.17.1 查询约束 283
8.17.2 示例:简单的配置系统 284
8.18 Resource Governor 287
8.18.1 配置 287
8.18.2 测试 290
8.19 横向扩展与纵向扩展 290
8.19.1 纵向扩展 290
8.19.2 横向扩展 291
8.19.3 确定系统瓶颈 292
8.20 高可用性 293
8.21 其他方面的性能提示 294
8.22 小结 295
第9章 SQL Server Analysis Services 297
9.1 分析服务概览 297
9.2 MDDB示例 299
9.2.1 RDBMS结构 299
9.2.2 数据源视图 300
9.2.3 Cube 303
9.2.4 时间维度 303
9.2.5 Items和Users维度 305
9.2.6 计算的成员 306
9.2.7 部署和测试 307
9.3 示例MDX查询 307
9.4 ADOMD.NET 313
9.4.1 单个单元格结果示例 313
9.4.2 使用GridView显示多行结果 315
9.5 使用SSIS更新Cube 316
9.6 预先缓存 319
9.6.1 数据存储选项 319
9.6.2 缓存模式 320
9.7 使用中间数据库 323
9.8 小结 324
第10章 基础和运维 325
10.1 插桩 325
10.2 容量规划 329
10.3 磁盘子系统 330
10.3.1 随机每秒钟I/O次数与顺序每秒钟I/O次数 330
10.3.2 NTFS碎片 331
10.3.3 磁盘分区设计 333
10.3.4 RAID选项 334
10.3.5 存储阵列网络 336
10.3.6 控制器缓存 337
10.3.7 固态磁盘 337
10.4 网络设计 338
10.4.1 巨型帧 338
10.4.2 链接集成 339
10.5 防火墙和路由器 340
10.5.1 Windows防火墙和防病毒软件 341
10.5.2 使用路由器作为硬件防火墙的替代方案 341
10.6 负载均衡器 341
10.7 DNS 342
10.8 临时环境 343
10.9 部署 343
10.9.1 数据层升级 344
10.9.2 提高部署速度 344
10.9.3 页面编译 345
10.9.4 预热缓存 345
10.10 服务器监控 346
10.11 小结 347
第11章 综合起来 348
11.1 从何处入手 348
11.2 开发过程 349
11.2.1 组织 350
11.2.2 项目阶段和里程碑 350
11.2.3 编码 351
11.2.4 测试 351
11.2.5 Bug跟踪 351
11.2.6 用户反馈 352
11.2.7 高性能的技巧 352
11.3 League 354
11.4 工具 355
11.5 架构 356
11.6 备忘录 357
11.6.1 原则和方法(第1章) 357
11.6.2 客户端性能(第2章) 357
11.6.3 缓存(第3章) 359
11.6.4 IIS 7(第4章) 360
11.6.5 ASP.NET线程和会话(第5章) 361
11.6.6 使用ASP.NET实现并管理优化技术(第6章) 361
11.6.7 管理ASP.NET应用策略(第7章) 362
11.6.8 SQL Server关系数据库(第8章) 363
11.6.9 SQL Server分析服务(第9章) 364
11.6.10 基础设施和运维(第10章) 364
11.7 小结 365
词汇表 367
《元明清散曲选》内容简介:散曲,是我国最后一种具有生命力的古典诗体。此前散曲选本多录元曲,而极少涉及明、清。本书则是一部全
《幸好有烦恼》内容简介:人为了什么而活着?难道就在吃喝享乐中度此一生吗?相信不少人都有过这种困惑,也在想方设法地寻觅答案。
《JSP应用开发详解》(第3版)结合JSP和Servlet的最新规范,从基本的语法和规范入手,以经验为后盾,以实用为目标,以实例为导向,
《Spring Batch批处理框架》内容简介:本书全面、系统地介绍了批处理框架Spring Batch,通过详尽的实战示例向读者展示了Spring Bat
Humansperceivethethree-dimensionalstructureoftheworldwithapparentease.However,de...
《中国文学史》内容简介:《中国文学史(珍藏版)》不欲多袭前人的论断。但前人或当代的学者们的批评与论断,可采者自甚多。《中国文
Writtenbywell-respecteddesignersanddevelopers,the4thSmashingBookcontainslotsofac...
《企业的护城河》内容简介:众多业内人士、专家、学者联袂推荐 揭示企业如何用宽广的护城河 打造结构性竞争优势、实现长期主义的收
《温暖的麦穗》内容简介:本书是国务院新闻办公室三局局长张雁彬的随笔散文集。书中收录了作者自大学毕业后在生活、工作中写下的一
《硬件安全攻防大揭秘》内容简介:本书是一本硬件安全攻防方面的综合性书籍。前三章介绍了硬件安全研究的基本概念、常用的设备工具
《无线通信》重点论述当前各类无线通信系统中具有普遍性和代表性的基本知识,包括基本的理论、问题、设计思路和分析方法。全书内
编辑推荐自媒体红利时代,无论企业还是个人,不融入,只能OUT!你愿意做时代的弃子?传统媒体正在受到新兴的自媒体的挑战,本书旨
《无处安放的金钱》内容简介:随着中国城市化进程的加快,中国中产阶层的崛起,对于他们来说金融资产很重要。人生的幸福很大程度上
虽然《我是猫》为人熟知,但未必被大家仔细读过。为了让读者能重拾它的独特之美,Graphic社计划为此书重新装帧,并集结出版,因此
本书介绍各种交换技术的基本概念和工作原理。全书共分12章,内容涵盖目前通信网中应用到的各类交换系统。主要内容包括:交换的基
ProductDescriptionLearnhowtocreategorgeousandexpressiveimagerywiththeProcessingp...
InDecember2009,Googlebegancustomizingitssearchresultsforeachuser.Insteadofgiving...
《商事指导性案例的司法适用》内容简介:指导性案例制度是一项具有中国特色的司法制度。为全面落实指导性案例的目的和本旨、促进商
LeeAllen是在顶尖大学里任职的安全架构师。多年以来,他持续关注信息安全行业和安全界内的新近发展。他有15年以上的IT行业经验,
《天才与算法:人脑与AI的数学思维》内容简介:本书为我们展现了人工智能是如何逐步变得强大,怎样支持我们人类的创造力,以及它们