《Web性能权威指南》

基本信息

原书名:High performance browser networking

原出版社: O'Reilly Media

作者: (加)Ilya Grigorik

译者: 李松峰

丛书名: 图灵程序设计丛书

出版社:人民邮电出版社

ISBN:9787115349101

上架时间:2014-4-2

出版日期:2014 年5月

开本:16开

页码:317

版次:1-1

所属分类:计算机 > 计算机网络 > Web Server > 综合

更多关于》》》《Web性能权威指南》

编辑推荐 

怎么才能让Web应用速度快、效率高?本书为所有关心这个问题的人提供了必须知道的网络知识,既包括影响性能的最基本因素,也包括那些能让我们创造更强大Web应用的重要技术革新,比如HTTP 2.0、XHR的改进、服务器发送事件(SSE)、WebSocket和WebRTC等。

内容简介

书籍

计算机书籍

  《web性能权威指南》是谷歌公司高性能团队核心成员的权威之作,堪称实战经验与规范解读完美结合的产物。本书目标是涵盖web 开发者技术体系中应该掌握的所有网络及性能优化知识。全书以性能优化为主线,从tcp、udp 和tls 协议讲起,解释了如何针对这几种协议和基础设施来优化应用。然后深入探讨了无线和移动网络的工作机制。最后,揭示了http 协议的底层细节,同时详细介绍了http 2.0、 xhr、sse、websocket、webrtc 和datachannel 等现代浏览器新增的具有革命性的新能力。

  《web性能权威指南》适合所有web 应用及站点开发人员阅读,包括但不限于前端、后端、运维、大数据分析、ui/ux、存储、视频、实时消息,以及性能工程师。

媒体评论

  “所有关注Web性能的人都应该看这本书,它是这个领域公认的权威参考指南。”

  ——Mark Nottingham

  IETF下一代HTTP工作组(HTTPbis Working Group)主席

  所有Web开发相关人员,都应该看这本书

  本书恰如其分地总结了性能问题的症结所在,以及HTTP和HTTPS优化技术。关于未来HTTP 2.0的内容也很多,很全面。

  ——Peter M. Goldstein

  绝对好书

  干这行的所有人必读。作者的研究工作叹为观止,信息全面翔实,而且全书结构紧凑,条理明晰。希望这本书能不断升级。

  ——JonoReview

  不看这本书不叫全栈工程师

  这本书涵盖了Web开发日常所用的协议、网络和API。作者断定延迟是Web性能的罪魁祸首,然后从客户端到服务器端,将TCP、UDP和TLS的工作原理娓娓道来,接着是各种无线网络连接技术,最后深入剖析了HTTP、XHR、SSE、WebSocket和WebRTC。作者以数据支撑自己的观点,整本书涵盖了Web网络开发涉及的方方面面。不管你是工作在前端还是后端,这本书都能为你优化应用提供最基本的常识。

  看完这本书,我真是受益匪浅,但我还想再看一遍,因为我担心遗漏了什么。这本书我高度推荐,在这个领域里,我还没发现有第二本类似的书。

  —— R. Friesel Jr. "found_drama"

  内容全面、解读精准

  我可以发誓,不管是谁,能把这本书看下来,看明白,你就是Web性能优化方面的无所不知的大牛了。

  我在微软IE团队当了8年网络程序管理员,仍然从这本书里学到了很多东西。而且,这本书跟我看过的其他书不一样,这本书中的每个细节都准确无误,的的确确是行业专家的手笔,跟那些只为挣钱的书有天壤之别。

  ——Eric Lawrence

  时代的杰作

  这本权威指南揭开了浏览器神秘的面纱。不光详细讲解了网络协议,同时还给出了实用的建议,而且深入探讨了令人兴奋的新技术。

  ——Peter Lubbers "Peter Lubbers

目录

《web性能权威指南》

steve souders 推荐序  xiii

前言  xv

第一部分 网络技术概览

第1章 延迟与带宽  3

1.1  速度是关键  3

1.2  延迟的构成  4

1.3  光速与传播延迟  6

1.4  延迟的最后一公里  7

1.5  网络核心的带宽  8

1.6  网络边缘的带宽  9

1.7  目标:高带宽和低延迟  10

第2章 tcp 的构成  13

2.1  三次握手  14

2.2  拥塞预防及控制  16

2.2.1  流量控制  16

2.2.2  慢启动  18

2.2.3  拥塞预防  24

2.3  带宽延迟积  25

2.4  队首阻塞  27

2.5  针对tcp 的优化建议  28

2.5.1  服务器配置调优  29

2.5.2  应用程序行为调优  30

2.5.3  性能检查清单  30

第3章 udp 的构成  31

3.1  无协议服务  32

3.2  udp 与网络地址转换器  34

3.2.1  连接状态超时  35

3.2.2  nat 穿透  36

3.2.3  stun、turn 与ice  37

3.3  针对udp 的优化建议  39

第4章 传输层安全(tls)  41

4.1  加密、身份验证与完整性  42

4.2  tls 握手  44

4.2.1  应用层协议协商(alpn)  46

4.2.2  服务器名称指示(sni)  47

4.3  tls 会话恢复  48

4.3.1  会话标识符  48

4.3.2  会话记录单  49

4.4  信任链与证书颁发机构  50

4.5  证书撤销  52

4.5.1  证书撤销名单(crl)  53

4.5.2  在线证书状态协议(ocsp)  54

4.6  tls 记录协议  54

4.7  针对tls 的优化建议  55

4.7.1  计算成本  55

4.7.2  尽早完成(握手)  56

4.7.3  会话缓存与无状态恢复  58

4.7.4  tls 记录大小  59

4.7.5  tls 压缩  60

4.7.6  证书链的长度  61

4.7.7  ocsp 封套  62

4.7.8  http 严格传输安全(hsts)  62

4.8  性能检查清单  63

4.9  测试与验证  64

第二部分 无线网络性能

第5章 无线网络概览  69

5.1  无所不在的连接  69

5.2  无线网络的类型  70

5.3  无线网络的性能基础  71

5.3.1  带宽  71

5.3.2  信号强度  74

5.3.3  调制  75

5.4  测量现实中的无线性能  76

第6章 wi-fi  79

6.1  从以太网到无线局域网  79

6.2  wi-fi 标准及功能  81

6.3  测量和优化wi-fi 性能  81

6.4  针对wi-fi 的优化建议  84

6.4.1  利用不计流量的带宽  84

6.4.2  适应可变带宽  85

6.4.3  适应可变的延迟时间  86

第7章 移动网络  87

7.1  g 字号移动网络简介  87

7.1.1  最早提供数据服务的2g  88

7.1.2  3gpp 与3gpp2  89

7.1.3  3g 技术的演进  91

7.1.4  imt-advanced 的4g 要求  93

7.1.5  长期演进(lte)  94

7.1.6  hspa+ 推进世界范围内的4g 普及  95

7.1.7  为多代并存的未来规划  96

7.2  设备特性及能力  97

7.3  无线电资源控制器(rrc)  99

7.3.1  3g、4g 和wi-fi 对电源的要求  101

7.3.2  lte rrc 状态机  102

7.3.3  hspa 与hspa+(umts)rrc 状态机  104

7.3.4  ev-do(cdma) rrc 状态机  106

7.3.5  低效率的周期性传输  107

7.4  端到端的运营商架构  108

7.4.1  无线接入网络(ran)  108

7.4.2  核心网络  110

7.4.3  回程容量与延迟  112

7.5  移动网络中的分组流  113

7.5.1  初始化请求  113

7.5.2  入站数据流  116

7.6  异质网络(hetnet)  117

7.7  真实的3g、4g 和wi-fi 性能  119

第8章 移动网络的优化建议  121

8.1  节约用电  122

8.2  消除周期性及无效的数据传输  124

8.3  预测网络延迟上限  126

8.3.1  考虑rrc 状态切换  127

8.3.2  解耦用户交互与网络通信  128

8.4  面对多网络接口并存的现实  128

8.5  爆发传输数据并转为空闲  130

8.6  把负载转移到wi-fi 网络  131

8.7  遵从协议和应用最佳实践  131

第三部分 http

第9章 http 简史  135

9.1  http 0.9:只有一行的协议  135

9.2  http 1.0:迅速发展及参考性rfc  136

9.3  http 1.1:互联网标准  138

9.4  http 2.0:改进传输性能  141

第10章 web 性能要点  143

10.1  超文本、网页和web 应用  144

10.2  剖析现代web 应用  146

10.2.1  速度、性能与用户期望  147

10.2.2  分析资源瀑布  148

10.3  性能来源:计算、渲染和网络访问  151

10.3.1  更多带宽其实不(太)重要  152

10.3.2  延迟是性能瓶颈  152

10.4  人造和真实用户性能度量  154

10.5  针对浏览器的优化建议  157

第11章 http 1.x  161

11.1  持久连接的优点  163

11.2  http 管道  165

11.3  使用多个tcp 连接  169

11.4  域名分区  171

11.5  度量和控制协议开销  173

11.6  连接与拼合  174

11.7  嵌入资源  177

第12章 http 2.0  179

12.1  历史及其与spdy 的渊源  180

12.2  走向http 2.0  181

12.3  设计和技术目标  182

12.3.1  二进制分帧层  183

12.3.2  流、消息和帧  184

12.3.3  多向请求与响应  185

12.3.4  请求优先级  186

12.3.5  每个来源一个连接  188

12.3.6  流量控制  189

12.3.7  服务器推送  190

12.3.8  首部压缩  192

12.3.9  有效的http 2.0 升级与发现  194

12.4  二进制分帧简介  196

12.4.1  发起新流  197

12.4.2  发送应用数据  198

12.4.3  http 2.0 帧数据流分析  199

第13章 优化应用的交付  201

13.1  经典的性能优化最佳实践  203

13.1.1  在客户端缓存资源  204

13.1.2  压缩传输的数据  205

13.1.3  消除不必要的请求字节  206

13.1.4  并行处理请求和响应  207

13.2  针对http 1.x 的优化建议  208

13.3  针对http 2.0 的优化建议  209

13.3.1  去掉对1.x 的优化  209

13.3.2  双协议应用策略  210

13.3.3  1.x 与2.0 的相互转换  212

13.3.4  评估服务器质量与性能  213

13.3.5  2.0 与tls  214

13.3.6  负载均衡器、代理及应用服务器  215

第四部分 浏览器api 与协议

第14章 浏览器网络概述  219

14.1  连接管理与优化  220

14.2  网络安全与沙箱  222

14.3  资源与客户端状态缓存  222

14.4  应用api 与协议  223

第15章 xmlhttprequest  225

15.1  xhr 简史  226

15.2  跨源资源共享(cors)  227

15.3  通过xhr 下载数据  230

15.4  通过xhr 上传数据  231

15.5  监控下载和上传进度  233

15.6  通过xhr 实现流式数据传输  234

15.7  实时通知与交付  236

15.7.1  通过xhr 实现轮询  237

15.7.2  通过xhr 实现长轮询  238

15.8  xhr 使用场景及性能  240

第16章 服务器发送事件  243

16.1  eventsource api  243

16.2  event stream 协议  245

16.3  sse 使用场景及性能  248

第17章 websocket  251

17.1  websocket api  252

17.1.1  ws 与wss  253

17.1.2  接收文本和二进制数据  253

17.1.3  发送文本和二进制数据  255

17.1.4  子协议协商  256

17.2  websocket 协议  257

17.2.1  二进制分帧层  258

17.2.2  协议扩展  260

17.2.3  http 升级协商  261

17.3  websocket 使用场景及性能  264

17.3.1  请求和响应流  264

17.3.2  消息开销  265

17.3.3  数据效率及压缩  266

17.3.4  自定义应用协议  266

17.3.5  部署websocket 基础设施  267

17.4  性能检查表  269

第18章 webrtc  271

18.1  标准和webrtc 的发展  272

18.2  音频和视频引擎  272

18.3  实时网络传输  276

18.4  建立端到端的连接  280

18.4.1  发信号和协商会话  280

18.4.2  会话描述协议(sdp)  282

18.4.3  交互连接建立(ice)  285

18.4.4  增量提供(trickle ice)  288

18.4.5  跟踪ice 收集和连接状态  289

18.4.6  完整的示例  291

18.5  交付媒体和应用数据  295

18.5.1  通过dtls 实现安全通信  296

18.5.2  通过srtp 和srtcp 交付媒体  298

18.5.3  通过sctp 交付应用数据  301

18.6  datachannel  305

18.6.1  设置与协商  307

18.6.2  配置消息次序和可靠性  309

18.6.3  部分可靠交付与消息大小  311

18.7  webrtc 使用场景及性能  312

18.7.1  音频、视频和数据流  312

18.7.2  多方通信架构  313

18.7.3  基础设施及容量规划  314

18.7.4  数据效率及压缩  315

18.8  性能检查表  316

关于封面  318

本图书信息来源:互动出版网

《Web性能权威指南》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. docker:一个支持django的dockerfile

    其中,包括了主要的生产环境模块, 从alpine作起,镜像不大.保存用. FROM alpine:3.7 COPY . /target-dir WORKDIR /target-dir RUN sed ...

  2. CSS------如何让大小不一样的div顶部对齐

    方法一:(推荐) <div style="float:left;margin-right:20px"> <img src="/source/s_1701 ...

  3. linux学习笔记-4.系统命令

    1.查看主机名 hostname 2.修改主机名(重启后无效) hostname hadoop 3.修改主机名(重启后永久生效) vi /ect/sysconfig/network 4.修改IP(重启 ...

  4. jquery 点击页面流畅弹出预定文字

    js代码: <script src="https://cdn.bootcss.com/jquery/2.2.1/jquery.min.js"></script&g ...

  5. UOJ.179.线性规划(单纯形)

    题目链接 这写得还不错:http://www.cnblogs.com/zzqsblog/p/5457091.html 引入基变量\(x_{i+n}\),将约束\(\sum_{i=1}^m a_{ij} ...

  6. ConcurrentHashMap内存溢出问题

    写在前面 上周,同事写了一段ConcurrentHashMap的测试代码,说往map里放了32个元素就内存溢出了,我大致看了一下他的代码及运行的jvm参数,觉得很奇怪,于是就自己捣鼓了一下.首先上一段 ...

  7. ASP.NET Core 中的框架级依赖注入

    https://tech.io/playgrounds/5040/framework-level-dependency-injection-with-asp-net-core 作者: Gunnar P ...

  8. CentOS下使用LVM进行分区(转)

    说明:为什么抄,因为这篇文章图文并茂,所有测试都在CentOS 6和7测试过. 许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统 ...

  9. 使用CefSharp在.Net程序中嵌入Chrome浏览器(三)——基本操作

    CefSharp本身提供了WPF和WinForm两个版本的控件,这两个版本的控件使用方法大同小异,由于我WPF的版本用的较多,这里就简单的介绍下WPF版的CEFSharp控件的用法. 加载页面: Ch ...

  10. Mui --- app与服务器之间的交互原理、mui ajax使用

    1.APP与服务器之间的交互原理 app端(客户端)与服务端的交互其实理解起来和容易,客户端想服务器端发送请求,服务器端进行数据运算后返回最终结果.结果可以是多种格式: 1.text 文本格式 2.x ...