本书专门讲解如何利用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
《古文观止:新注插图本》内容简介:新版《古文观止》收录全本二百二十二篇,以中华书局简体校本为底本,参考广益书局重订言文对照
◎台灣第一本以專業角度探討暗網以及網路非法社群次文化等的書籍◎亞馬遜好評4.3顆星、美國國家公共廣播電台(NPR)2015年度最佳
《C#本质论(第3版)》是一部好评如潮的语言参考书,作者用一种非常合理的方式来组织《C#本质论(第3版)》的内容,由浅人深地介绍了
《五子连珠必胜法》经日本国虹有社授权,译自日本连珠社已故理事长新井华石九段经典著作《连珠必胜法》一书。内容阐述和介绍五子
数据结构和编程设计-应用C语言-(第二版)-(英文影印版) 本书特色 《数据结构和编程设计——应用c语言(第2版)》以c++为描述语言,系统介绍数据结构...
《愿你成为最好的女子(经典版)》内容简介:不可爱的缺点;既能看到美好的一面,也充满自省、努力成为更好的女子的启示。女人,要
WithPHPfortheWorldWideWeb,ThirdEdition:VisualQuickStartGuide,readerscanstartfrom...
思想的窠臼是创意最大的杀手。我们在思考点子时,却总陷入过去曾有的经验为影像基础,而无法获得原创的点子。然而该如何分辨游荡
本书是为站长群体编写的一本入门级的书,它的定位是:对网站制作不清楚、对网站程序不了解、想成为一名站长的人。从基本的网站概
作为jQueryMobile的入门级读物,BradBroulik所著的《jQueryMobile快速入门》以示例方式讲解了jQueryMobile的基本知识和核...
本书提供了关于iPhoneSDK以及iPhone开发的全面信息,对iPhoneSDK中的各种组件做了深入浅出的介绍,包括iPhone3.0SDK的所有新增特
3天学会电脑组装-(附赠多媒体光盘1张) 本书特色 为避免电脑入门者学习电脑的盲目性,编者在大量实践的基础上总结自己的学习经验并经过精心设计,将组装电脑的整个过...
计算智能 内容简介 本书共9章,介绍了传统智能技术的主要原理与技术、方法,主要包括知识的表示、基本推理、不确定推理、搜索原理等。同时,还介绍了现代智能技术主要的...
《中国历代传统纹样》全篇从史前时期到明清时期共分八章,侧重点放在中国历代的纹样描述上。我国的传统纹样源远流长,从原始图腾
Adobe创意大学动漫设计师Flash CS5+Photoshop CS5标准实训教材 本书特色 《Adobe创意大学指定教材:Adobe创意大学动漫设计师Fl...
单片机中级教程--原理与应用(第2 版) 内容简介 本书为普通高等教育“十一五”国家级规划教材,以80C51系列单片机为主线,系统地介绍了单片机的组成、工作原理...
《从极简到极致》内容简介:本书是关于工作与人生的方法论。这里没有不切实际的想象,也没有空洞的口号,有的只是从一个又一个真实
《工匠革命:制造业的精神与文化变迁》内容简介:本书从人类制造业的历史演化及其文化变迁出发,对工匠精神的起源、形成与发展进行
《平面设计视觉词典》旨在对平面设计中容易混淆的一些专业词汇予以区别和解释,比如斜线和斜体的区别,重印、套印、翻转的区别等
《绿色诊断理论与实践》内容简介:本书根据绿色诊断的理论方法和企业绿色诊断的实践,对绿色诊断标准和法律法规体系、绿色诊断主要