web前端 网络优化学习笔记

延迟

传播延迟

消息从发送端到接收端需要的时间,是信号传播距离和速度的函数

传输延迟

把消息中的所有比特转移到链路中需要的时间,是消息长度和链路速率的函数

处理延迟

处理分组首部、检查位错误及确定分组目标所需的时间

排队延迟

到来的分组排队等待处理的时间

TCP

连接前的三次握手


1. SYN。发送端发送SYN分组,包含一个随机序列号x;

2. SYN ACK。接收端在接收到SYN分组之后,给x加1,并选择自己的随机序列号y,将包括x和y的分组响应给发送端;

3. ACK。 发送端在接收到SYN ACK之后,给x和y加1,将包含x和y的分组发送给接收端。

4. 发送端在发送了ACK之后,就完成了3此握手。然后发送端可以立即向接收端发送自己的请求报文,等待响应。

当请求的数据比较小的时候,几乎可以忽略传输延迟,主要的是瓶颈是传播延迟,tcp三次握手的时间就会占据此请求的绝大部分时间!

拥塞控制


1. rwnd(接收窗口)。接收方和发送方都拥有此窗口,包括能够保存数据的缓冲区空间大小信息,且在建立连接的时候会通告对方自己的rwnd(一般为系统默认设置)。

2. cwnd(拥塞窗口大小)。发送端对从客户端接收确认之前可以发送数据量的限制,接收方和发送方并不会向对方共享这个数据。

3. 窗口缩放。rwnd初始默认设置16位,即接收窗口大小为2^16字节,无法充分使用带宽。所以再TCP三次握手期间,发送接收双方互相交换的报文有一个值用来表示在将来的ACK报文中左移rwnd的位数。这就是窗口缩放,在所有的平台默认启动。

4. 慢启动。发送端每次发送消息的长度都是rwnd和cwnd之间的最小值。cwnd初始值为n,当发送方接收到ACK之后,会将cwnd设置为2n,以此循环。这是慢启动。

HTTP

expires 字段

HTTP 1.0版本 响应头部字段。值为一个绝对时间。当再次请求此资源时,如果没有超过expires值,且缓存数据没有失效,则浏览器会从缓存获取此值,状态码为200。如果超过此时间值,浏览器会认为此资源过期,并向服务器请求此资源。

etag 字段

HTTP 1.1 响应头部字段。值为一个字符串。etag实际上就是一个资源的校验字段,当浏览器再次向服务器请求一个此资源时,如果etag值与服务器的相同,则表明此资源没有被改变,则返回304状态码,不返回此资源,减少传输延迟。否则则返回新的etag和此资源。这个和expires的区别在于使用etag校验数据是否改变时必须得发送一次http请求,而expires则不需要。

last-modified 字段

HTTP 1.0版本 响应头部字段。值为一个相对时间。当向服务器请求此资源时,如果服务器的last-modified的值一致,则返回304状态码,不返回此资源,减少传输延迟。其一般与expires头部一起使用。

短连接

短连接指需要发起请求时才建立TCP连接,请求结束之后就关闭连接。

长连接

长连接指发起了一次TCP连接,在结束此请求之后并未断开,还可以继续使用此链接来发起相同的请求。在P2P等实时通信应用中多采用长连接。

持久连接

持久连接是指发起了一次TCP连接,在结束此请求之后并未断开,还可以继续使用此链接来发起不同url的请求。http1.1新增的功能,极大的减少了因TCP三次握手带来的时间延迟。

网络优化规则

减少DNS查询


1. 浏览器内部储存DNS解析表

2. 预解析。基本已被大多数浏览器支持

<link rel="dns-prefetch" href="http://baidu.com">
 

减少HTTP请求

 使用webpack打包,将多文件压缩为单文件,将多个http请求变为一个。

使用CDN

从地理上把数据放到接近客户端的地方,可以显著减少每次TCP连接的网络延迟,增加吞吐量。

添加expires首部并配置ETag标签

HTTP部分已经解释了他们的工作机制

Gzip资源

所有文本资源都应该使用Gzip压缩,然后再在客户端与服务器间传输。一般来说,Gzip可以减少60~80%的文件大小,也是一个相对简单(只要在服务器上配置一个选项)但优化效果不错的举措。

避免HTTP重定向

HTTP重定向极其消耗时间,特别是把客户端重定向到一个完全不同域名的情况下,会导致额外的DNS查询和TCP连接延迟。解决措施是预渲染。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值