书籍详情
深入性能测试:LoadRunner性能测试、流程、监控、调优全程实战剖析(第二版)
作者:黄文高 著
出版社:中国水利水电出版社
出版时间:2022-09-01
ISBN:9787522609690
定价:¥118.00
购买这本书可以去
内容简介
本书主要深入系统地讲解性能测试及性能调优相关技术。全书紧紧围绕企业现阶段性能测试的核心内容进行编排,囊括了性能测试的三大核心内容,即性能测试过程、脚本开发、服务器监控与调优。其中,性能测试过程的内容主要包括性能测试流程、性能工作负载建模和生产环境下的性能测试;脚本开发的内容包括特殊协议的脚本开发、接口性能的脚本开发以及全链路性能测试的脚本开发;服务器监控与调优的内容主要包括操作系统资源的监控与调优、Apache服务器监控与调优、Tomcat服务器监控与调优、Nginx服务器监控与调优、MS SQL服务器监控与调优、MySQL服务器监控与调优、Redis服务器监控与调优和前端性能优化的23大规则。 本书适用于测试工程师或已经在做性能测试的朋友,为了让一些想进入性能测试领域工作但缺少性能测试相关基础知识的朋友也能使用本书,作者免费提供了《性能测试基础—LoadRunner完全讲义》电子书,可通过扫描本书前言后面的二维码获取,通过二维码还可获取本书所有的相关代码等学习资源。希望本书能带领大家畅游性能测试的精彩世界。
作者简介
暂缺《深入性能测试:LoadRunner性能测试、流程、监控、调优全程实战剖析(第二版)》作者简介
目录
目 录
前言
第一版前言
第1章 性能测试过程 1
1.1 性能测试过程概述 1
1.2 性能测试设计 2
1.2.1 需求调研 2
1.2.2 业务模型 3
1.2.3 场景模型 5
1.2.4 数据设计 6
1.2.5 环境设计 8
1.3 性能测试构建 9
1.3.1 用例设计 9
1.3.2 脚本开发 11
1.3.3 场景设计 12
1.3.4 搭建测试环境 13
1.3.5 准备数据 13
1.4 性能测试过程执行 13
1.5 性能测试分析、诊断、调节 13
1.6 小结 14
第2章 工作负载建模 15
2.1 什么是工作负载建模 15
2.2 工作负载建模主要活动 16
2.2.1 定义性能测试目标 16
2.2.2 理解应用程序 16
2.2.3 关键场景识别 17
2.2.4 确定关键场景使用路径 17
2.2.5 确定唯一测试参数 18
2.2.6 确定场景中的相对负载分布 19
2.2.7 确定目标负载水平 19
2.2.8 其他项设置 20
2.3 小结 20
第3章 生产系统性能测试 21
3.1 什么是生产环境 21
3.2 生产环境性能测试风险 22
3.3 为什么需要在生产环境下进行性能测试 23
3.4 生产环境性能测试误解 24
3.5 生产环境下性能测试最佳实践 25
3.6 小结 26
第4章 特殊协议 27
4.1 Windows Sockets(WinSock)协议 27
4.1.1 Windows Sockets录制选项设置 27
4.1.2 Windows Sockets录制 29
4.1.3 Windows Sockets数据操作 33
4.1.4 关于LRS函数 35
4.2 邮件服务协议 41
4.2.1 邮件服务协议简介 41
4.2.2 邮件服务协议录制 43
4.2.3 脚本分析 48
4.2.4 关于SMTP和POP3函数 50
4.3 小结 52
第5章 基于接口性能测试 53
5.1 WSDL协议简介 53
5.2 Web Service接口测试 56
5.2.1 选择Web Services协议 56
5.2.2 选择Manage Services管理待测试的
服务 57
5.2.3 Import Services导入服务 58
5.2.4 添加服务调用(Add Service Call) 60
5.2.5 调试脚本 63
5.2.6 增强脚本 64
5.3 web_service_call函数 65
5.4 Java环境 68
5.5 JavaVuser常用函数 69
5.6 JavaVuser脚本 70
5.6.1 手工插入Java的方法 71
5.6.2 增强Java脚本 72
5.6.3 Java脚本关联 72
5.6.4 Java脚本参数化 72
5.7 web_submit_data 73
5.8 web_custom_request 76
5.9 小结 80
第6章 全链路脚本开发 81
6.1 什么是全链路性能脚本 81
6.2 如何将脚本封装成.h头文件 83
6.3 业务场景对全链路脚本的影响 86
6.3.1 关键场景识别 87
6.3.2 确定主要场景导航路径 89
6.4 全链路脚本开发实例 89
6.5 小结 94
第7章 操作系统性能监控与调优 95
7.1 Windows操作系统监控 95
7.1.1 LoadRunner直接监控 95
7.1.2 Windows性能工具监控 96
7.1.3 Windows计数器 101
7.2 Linux/UNIX操作系统监控 107
7.2.1 程序执行模型 107
7.2.2 CPU监控 110
7.2.3 内存监控 115
7.2.4 磁盘监控 119
7.2.5 网络监控 124
7.3 nmon系统资源监控工具 128
7.3.1 nmon工作流程 128
7.3.2 nmon命令 129
7.3.3 结果分析 137
7.4 小结 138
第8章 Apache监控与调优 139
8.1 Apache目录结构 139
8.2 Apache配置文件 140
8.3 Apache监控 144
8.3.1 status模块监控 144
8.3.2 Apachetop监控 151
8.4 Apache调优 154
8.4.1 硬件与操作系统 154
8.4.2 运行时的配置 155
8.4.3 编译时的配置 159
8.5 MPM调优 161
8.5.1 选择MPM 161
8.5.2 MPM模块工作原理 162
8.5.3 MPM相关参数 165
8.6 日志文件分析 171
8.6.1 access_log日志文件 171
8.6.2 error_log日志文件 173
8.6.3 日志文件分析工具或指令 173
8.7 小结 175
第9章 Tomcat监控与调优 176
9.1 Tomcat结构体系 176
9.2 Tomcat监控 180
9.2.1 Status页监控 180
9.2.2 JConsole监控 182
9.2.3 Probe监控 192
9.3 Tomcat调优 197
9.3.1 Tomcat配置 198
9.3.2 连接器配置 202
9.3.3 APR配置 207
9.4 JVM调优 211
9.4.1 JVM内存模型 211
9.4.2 堆与栈 214
9.4.3 PermGen与Metaspace的区别 215
9.4.4 GC回收机制 218
9.4.5 垃圾收集算法 219
9.4.6 垃圾回收器 223
9.4.7 类加载过程 230
9.4.8 JVM参数设置 231
9.5 日志文件分析 236
9.5.1 日志文件类型 236
9.5.2 日志文件配置 236
9.6 小结 239
第10章 Nginx监控与调优 240
10.1 Nginx三大工作模块 241
10.1.1 Nginx启动、停止 241
10.1.2 Nginx工作原理 242
10.1.3 Nginx进程模型 243
10.1.4 Nginx Http请求过程 243
10.2 Nginx配置上下文 245
10.3 Nginx监控 245
10.3.1 status监控 246
10.3.2 Ngxtop监控 247
10.4 Nginx负载均衡 251
10.4.1 负载均衡概述 251
10.4.2 Nginx负载均衡工作原理 251
10.4.3 设置Http负载均衡 252
10.4.4 负载均衡算法 253
10.4.5 设置服务器权重 255
10.4.6 慢启动 257
10.4.7 限制连接数 257
10.4.8 开启会话持久性 257
10.5 健康检查 259
10.5.1 被动式健康检查 259
10.5.2 主动式健康检查 260
10.5.3 强制健康检查 262
10.6 Nginx压缩与解压 263
10.6.1 启用压缩 264
10.6.2 启用解缩 265
10.6.3 发送压缩文件 266
10.7 Nginx缓存 266
10.7.1 启用响应缓存 266
10.7.2 与进程相关的缓存 268
10.7.3 指定缓存的请求 268
10.7.4 限制或禁用响应缓存 269
10.7.5 清除缓存内容 269
10.7.6 字节范围缓存 271
10.7.7 组合缓存配置实例 272
10.8 小结 273
第11章 MS SQL数据库监控与调优 274
11.1 监控SQL Server资源 274
11.1.1 瓶颈类型 274
11.1.2 内存瓶颈 275
11.1.3 瓶颈类型 277
11.1.4 磁盘瓶颈 277
11.1.5 Wait Statistics监控 278
11.2 SQL Server等待类型 279
11.2.1 SQL等待类型 279
11.2.2 如何跟踪等待 289
11.2.3 阻塞与锁 291
11.3 SQL Profiler监控查询 296
11.3.1 SQL Trace相关术语 296
11.3.2 SQL Trace选项 299
11.3.3 捕获阻塞事件 303
11.3.4 捕获Showplan XML数据 305
11.3.5 捕获死锁图 308
11.3.6 SQL Profiler识别长时间查询 311
11.3.7 Profile Trace与System Monitor关联 315
11.4 索引调优 317
11.4.1 索引原理 317
11.4.2 填充因子 317
11.4.3 聚集索引 318
11.4.4 非聚集索引 321
11.4.5 堆表 323
11.4.6 用DTA调校索引 323
11.4.7 索引维护 329
11.5 T-SQL调优 333
11.5.1 NOT IN和NOT EXISTS 333
11.5.2 谓词的使用 334
11.5.3 为中间结果使用临时表 335
11.6 小结 336
第12章 MySQL性能监控与调优 337
12.1 使用LoadRunner直接压测MySQL 337
12.2 慢查询 339
12.2.1 查看慢查询相关设置 339
12.2.2 启动和设置慢查询 340
12.2.3 慢查询日志文件分析 340
12.2.4 慢查询日志分析工具
mysqldumpslow 341
12.3 EXPLAIN语句 343
12.3.1 EXPLAIN语法 343
12.3.2 EXPLAIN Output Columns输出列 344
12.3.3 EXPLAIN Join Types连接方式 347
12.3.4 EXPLAIN Extra Information额外信息 349
12.4 profile语句 352
12.4.1 开启profile 352
12.4.2 show profile 352
12.5 索引 357
12.5.1 索引结构 357
12.5.2 索引常用策略 361
12.5.3 索引优缺点 372
12.6 查询执行过程 372
12.7 SQL执行顺序 376
12.8 优化数据类型和优化访问数据 378
12.8.1 优化数据类型 378
12.8.2 常见数据类型 379
12.8.3 优化访问数据 383
12.9 状态监控 384
12.9.1 SHOW STATUS语句 384
12.9.2 SHOW STATUS变量 386
12.10 配置文件 389
12.10.1 使用选项文件 389
12.10.2 配置文件常见设置 390
12.11 小结 396
第13章 Redis性能监控与调优 397
13.1 使用LoadRunner调用Redis API进行压测 397
13.2 Redis Slowlog 401
13.2.1 什么是Slowlog 401
13.2.2 设置Slowlog 401
13.2.3 查看Slowlog 402
13.3 持久化 403
13.3.1 RDB持久化 404
13.3.2 AOF持久化 408
13.3.3 RDB和AOF的优缺点 411
13.3.4 备份策略RDB与AOF相互协同 411
13.4 主从复制 413
13.4.1 配置主从复制 413
13.4.2 断开复制 415
13.4.3 主从复制工作原理 416
13.4.4 心跳 421
13.4.5 master关闭持久化,保证复制的安全性 422
13.4.6 Redis复制如何处理过期的key 423
13.4.7 允许只写入N个附加的副本 423
13.4.8 只读性质的slave 424
13.4.9 重新启动和故障转移后的部分同步 424
13.5 哨兵 425
13.5.1 为什么需要Sentinel 425
13.5.2 部署Sentinel 425
13.5.3 主观下线和客观下线 427
13.5.4 故障转移 428
13.5.5 Sentinel配置项 429
13.6 内存优化 430
13.6.1 获取内存数据 430
13.6.2 内存消耗模型 432
13.6.3 内存上限设置 434
13.6.4 回收内存策略 434
13.7 性能测试 436
13.7.1 性能测试工具redis-benchmark 436
13.7.2 延迟监控与分析 439
13.7.3 big key 446
13.7.4 Hot key 448
13.7.5 缓存粒度 451
13.7.6 缓存穿透 452
13.7.7 缓存击穿 454
13.7.8 缓存雪崩 456
13.8 小结 457
第14章 前端性能监控与调优 458
14.1 前端监控工具YSlow 458
14.1.1 安装YSlow 458
14.1.2 使用YSlow 459
14.2 23大前端性能规则 462
14.2.1 最小化HTTP请求 462
14.2.2 使用内容发布网络 463
14.2.3 添加Expires头 463
14.2.4 Gzip组件 465
14.2.5 将样式表放在顶部 465
14.2.6 将脚本放在底部 466
14.2.7 避免使用CSS表达式 468
14.2.8 将JavaScript和CSS置于外部 469
14.2.9 减少DNS查找 471
14.2.10 精简JavaScript和CSS 472
14.2.11 避免重定向 474
14.2.12 删除重复脚本 478
14.2.13 配置ETags 478
14.2.14 使AJAX可缓存 480
14.2.15 AJAX使用Get请求 481
14.2.16 减少DOM数 483
14.2.17 避免空链接 485
14.2.18 避免404错误 486
14.2.19 减少Cookie的大小 488
14.2.20 使用一些空闲Cookie的域 492
14.2.21 避免过滤器 494
14.2.22 不要缩放图片 496
14.2.23 使用icon格式图片和使用缓存 496
14.3 小结 497
前言
第一版前言
第1章 性能测试过程 1
1.1 性能测试过程概述 1
1.2 性能测试设计 2
1.2.1 需求调研 2
1.2.2 业务模型 3
1.2.3 场景模型 5
1.2.4 数据设计 6
1.2.5 环境设计 8
1.3 性能测试构建 9
1.3.1 用例设计 9
1.3.2 脚本开发 11
1.3.3 场景设计 12
1.3.4 搭建测试环境 13
1.3.5 准备数据 13
1.4 性能测试过程执行 13
1.5 性能测试分析、诊断、调节 13
1.6 小结 14
第2章 工作负载建模 15
2.1 什么是工作负载建模 15
2.2 工作负载建模主要活动 16
2.2.1 定义性能测试目标 16
2.2.2 理解应用程序 16
2.2.3 关键场景识别 17
2.2.4 确定关键场景使用路径 17
2.2.5 确定唯一测试参数 18
2.2.6 确定场景中的相对负载分布 19
2.2.7 确定目标负载水平 19
2.2.8 其他项设置 20
2.3 小结 20
第3章 生产系统性能测试 21
3.1 什么是生产环境 21
3.2 生产环境性能测试风险 22
3.3 为什么需要在生产环境下进行性能测试 23
3.4 生产环境性能测试误解 24
3.5 生产环境下性能测试最佳实践 25
3.6 小结 26
第4章 特殊协议 27
4.1 Windows Sockets(WinSock)协议 27
4.1.1 Windows Sockets录制选项设置 27
4.1.2 Windows Sockets录制 29
4.1.3 Windows Sockets数据操作 33
4.1.4 关于LRS函数 35
4.2 邮件服务协议 41
4.2.1 邮件服务协议简介 41
4.2.2 邮件服务协议录制 43
4.2.3 脚本分析 48
4.2.4 关于SMTP和POP3函数 50
4.3 小结 52
第5章 基于接口性能测试 53
5.1 WSDL协议简介 53
5.2 Web Service接口测试 56
5.2.1 选择Web Services协议 56
5.2.2 选择Manage Services管理待测试的
服务 57
5.2.3 Import Services导入服务 58
5.2.4 添加服务调用(Add Service Call) 60
5.2.5 调试脚本 63
5.2.6 增强脚本 64
5.3 web_service_call函数 65
5.4 Java环境 68
5.5 JavaVuser常用函数 69
5.6 JavaVuser脚本 70
5.6.1 手工插入Java的方法 71
5.6.2 增强Java脚本 72
5.6.3 Java脚本关联 72
5.6.4 Java脚本参数化 72
5.7 web_submit_data 73
5.8 web_custom_request 76
5.9 小结 80
第6章 全链路脚本开发 81
6.1 什么是全链路性能脚本 81
6.2 如何将脚本封装成.h头文件 83
6.3 业务场景对全链路脚本的影响 86
6.3.1 关键场景识别 87
6.3.2 确定主要场景导航路径 89
6.4 全链路脚本开发实例 89
6.5 小结 94
第7章 操作系统性能监控与调优 95
7.1 Windows操作系统监控 95
7.1.1 LoadRunner直接监控 95
7.1.2 Windows性能工具监控 96
7.1.3 Windows计数器 101
7.2 Linux/UNIX操作系统监控 107
7.2.1 程序执行模型 107
7.2.2 CPU监控 110
7.2.3 内存监控 115
7.2.4 磁盘监控 119
7.2.5 网络监控 124
7.3 nmon系统资源监控工具 128
7.3.1 nmon工作流程 128
7.3.2 nmon命令 129
7.3.3 结果分析 137
7.4 小结 138
第8章 Apache监控与调优 139
8.1 Apache目录结构 139
8.2 Apache配置文件 140
8.3 Apache监控 144
8.3.1 status模块监控 144
8.3.2 Apachetop监控 151
8.4 Apache调优 154
8.4.1 硬件与操作系统 154
8.4.2 运行时的配置 155
8.4.3 编译时的配置 159
8.5 MPM调优 161
8.5.1 选择MPM 161
8.5.2 MPM模块工作原理 162
8.5.3 MPM相关参数 165
8.6 日志文件分析 171
8.6.1 access_log日志文件 171
8.6.2 error_log日志文件 173
8.6.3 日志文件分析工具或指令 173
8.7 小结 175
第9章 Tomcat监控与调优 176
9.1 Tomcat结构体系 176
9.2 Tomcat监控 180
9.2.1 Status页监控 180
9.2.2 JConsole监控 182
9.2.3 Probe监控 192
9.3 Tomcat调优 197
9.3.1 Tomcat配置 198
9.3.2 连接器配置 202
9.3.3 APR配置 207
9.4 JVM调优 211
9.4.1 JVM内存模型 211
9.4.2 堆与栈 214
9.4.3 PermGen与Metaspace的区别 215
9.4.4 GC回收机制 218
9.4.5 垃圾收集算法 219
9.4.6 垃圾回收器 223
9.4.7 类加载过程 230
9.4.8 JVM参数设置 231
9.5 日志文件分析 236
9.5.1 日志文件类型 236
9.5.2 日志文件配置 236
9.6 小结 239
第10章 Nginx监控与调优 240
10.1 Nginx三大工作模块 241
10.1.1 Nginx启动、停止 241
10.1.2 Nginx工作原理 242
10.1.3 Nginx进程模型 243
10.1.4 Nginx Http请求过程 243
10.2 Nginx配置上下文 245
10.3 Nginx监控 245
10.3.1 status监控 246
10.3.2 Ngxtop监控 247
10.4 Nginx负载均衡 251
10.4.1 负载均衡概述 251
10.4.2 Nginx负载均衡工作原理 251
10.4.3 设置Http负载均衡 252
10.4.4 负载均衡算法 253
10.4.5 设置服务器权重 255
10.4.6 慢启动 257
10.4.7 限制连接数 257
10.4.8 开启会话持久性 257
10.5 健康检查 259
10.5.1 被动式健康检查 259
10.5.2 主动式健康检查 260
10.5.3 强制健康检查 262
10.6 Nginx压缩与解压 263
10.6.1 启用压缩 264
10.6.2 启用解缩 265
10.6.3 发送压缩文件 266
10.7 Nginx缓存 266
10.7.1 启用响应缓存 266
10.7.2 与进程相关的缓存 268
10.7.3 指定缓存的请求 268
10.7.4 限制或禁用响应缓存 269
10.7.5 清除缓存内容 269
10.7.6 字节范围缓存 271
10.7.7 组合缓存配置实例 272
10.8 小结 273
第11章 MS SQL数据库监控与调优 274
11.1 监控SQL Server资源 274
11.1.1 瓶颈类型 274
11.1.2 内存瓶颈 275
11.1.3 瓶颈类型 277
11.1.4 磁盘瓶颈 277
11.1.5 Wait Statistics监控 278
11.2 SQL Server等待类型 279
11.2.1 SQL等待类型 279
11.2.2 如何跟踪等待 289
11.2.3 阻塞与锁 291
11.3 SQL Profiler监控查询 296
11.3.1 SQL Trace相关术语 296
11.3.2 SQL Trace选项 299
11.3.3 捕获阻塞事件 303
11.3.4 捕获Showplan XML数据 305
11.3.5 捕获死锁图 308
11.3.6 SQL Profiler识别长时间查询 311
11.3.7 Profile Trace与System Monitor关联 315
11.4 索引调优 317
11.4.1 索引原理 317
11.4.2 填充因子 317
11.4.3 聚集索引 318
11.4.4 非聚集索引 321
11.4.5 堆表 323
11.4.6 用DTA调校索引 323
11.4.7 索引维护 329
11.5 T-SQL调优 333
11.5.1 NOT IN和NOT EXISTS 333
11.5.2 谓词的使用 334
11.5.3 为中间结果使用临时表 335
11.6 小结 336
第12章 MySQL性能监控与调优 337
12.1 使用LoadRunner直接压测MySQL 337
12.2 慢查询 339
12.2.1 查看慢查询相关设置 339
12.2.2 启动和设置慢查询 340
12.2.3 慢查询日志文件分析 340
12.2.4 慢查询日志分析工具
mysqldumpslow 341
12.3 EXPLAIN语句 343
12.3.1 EXPLAIN语法 343
12.3.2 EXPLAIN Output Columns输出列 344
12.3.3 EXPLAIN Join Types连接方式 347
12.3.4 EXPLAIN Extra Information额外信息 349
12.4 profile语句 352
12.4.1 开启profile 352
12.4.2 show profile 352
12.5 索引 357
12.5.1 索引结构 357
12.5.2 索引常用策略 361
12.5.3 索引优缺点 372
12.6 查询执行过程 372
12.7 SQL执行顺序 376
12.8 优化数据类型和优化访问数据 378
12.8.1 优化数据类型 378
12.8.2 常见数据类型 379
12.8.3 优化访问数据 383
12.9 状态监控 384
12.9.1 SHOW STATUS语句 384
12.9.2 SHOW STATUS变量 386
12.10 配置文件 389
12.10.1 使用选项文件 389
12.10.2 配置文件常见设置 390
12.11 小结 396
第13章 Redis性能监控与调优 397
13.1 使用LoadRunner调用Redis API进行压测 397
13.2 Redis Slowlog 401
13.2.1 什么是Slowlog 401
13.2.2 设置Slowlog 401
13.2.3 查看Slowlog 402
13.3 持久化 403
13.3.1 RDB持久化 404
13.3.2 AOF持久化 408
13.3.3 RDB和AOF的优缺点 411
13.3.4 备份策略RDB与AOF相互协同 411
13.4 主从复制 413
13.4.1 配置主从复制 413
13.4.2 断开复制 415
13.4.3 主从复制工作原理 416
13.4.4 心跳 421
13.4.5 master关闭持久化,保证复制的安全性 422
13.4.6 Redis复制如何处理过期的key 423
13.4.7 允许只写入N个附加的副本 423
13.4.8 只读性质的slave 424
13.4.9 重新启动和故障转移后的部分同步 424
13.5 哨兵 425
13.5.1 为什么需要Sentinel 425
13.5.2 部署Sentinel 425
13.5.3 主观下线和客观下线 427
13.5.4 故障转移 428
13.5.5 Sentinel配置项 429
13.6 内存优化 430
13.6.1 获取内存数据 430
13.6.2 内存消耗模型 432
13.6.3 内存上限设置 434
13.6.4 回收内存策略 434
13.7 性能测试 436
13.7.1 性能测试工具redis-benchmark 436
13.7.2 延迟监控与分析 439
13.7.3 big key 446
13.7.4 Hot key 448
13.7.5 缓存粒度 451
13.7.6 缓存穿透 452
13.7.7 缓存击穿 454
13.7.8 缓存雪崩 456
13.8 小结 457
第14章 前端性能监控与调优 458
14.1 前端监控工具YSlow 458
14.1.1 安装YSlow 458
14.1.2 使用YSlow 459
14.2 23大前端性能规则 462
14.2.1 最小化HTTP请求 462
14.2.2 使用内容发布网络 463
14.2.3 添加Expires头 463
14.2.4 Gzip组件 465
14.2.5 将样式表放在顶部 465
14.2.6 将脚本放在底部 466
14.2.7 避免使用CSS表达式 468
14.2.8 将JavaScript和CSS置于外部 469
14.2.9 减少DNS查找 471
14.2.10 精简JavaScript和CSS 472
14.2.11 避免重定向 474
14.2.12 删除重复脚本 478
14.2.13 配置ETags 478
14.2.14 使AJAX可缓存 480
14.2.15 AJAX使用Get请求 481
14.2.16 减少DOM数 483
14.2.17 避免空链接 485
14.2.18 避免404错误 486
14.2.19 减少Cookie的大小 488
14.2.20 使用一些空闲Cookie的域 492
14.2.21 避免过滤器 494
14.2.22 不要缩放图片 496
14.2.23 使用icon格式图片和使用缓存 496
14.3 小结 497
猜您喜欢