http杂谈

作者: huxt | 来源:发表于2019-07-01 09:40 被阅读0次
浏览器url生命周期

1.网络5层模型

1.1)http 1.1的特点

1.持久链接

持久连接的特点是:只要任意一端没有明确提出断开连接,则保持TCP连接状态。在HTTP1.0中,没有默认支持持久连接,而在HTTP1.1中所有连接默认都是持久连接

2.pipeline

HTTP管线化是将多个HTTP要求(request)整批提交的技术,而在传送过程中不需先等待服务端的回应。管线化机制须通过永久连接(persistent connection)完成,仅HTTP/1.1支持此技术(HTTP/1.0不支持),并且只有GET和HEAD要求可以进行管线化,而POST则有所限制。此外,初次创建连接时也不应启动管线机制.

http管线化是一项实现了多个http请求但不需要等待响应就能够写进同一个socket的技术,仅有http1.1规范支持http管线化,1.0并不支持;

1.2) http 2.0

1.数据以二进制传输 (将通信的基本单位缩小为帧)

即应用层(HTTP)和传输层(TCP or UDP)之间增加一个二进制分帧层,因此在多向请求和响应时,客户端和服务器可以把HTTP消息分解为互不依赖的帧,然后乱序发送,最后再在另一端把它们重新组合起来,解决了http 1.*的对手阻塞问题

2.同一个连接发送多个请求,不按照顺序来接收(支持多路复用)

 多路复用允许同时通过单一的 HTTP 2.0 连接发起多重的请求-响应消息,即所有HTTP 2.0 连接都是持久化的,而且客户端与服务器之间也只需要一个连接即可,所有数据流共用同一个连接 ,减少了因http链接多而引起的网络拥塞(在 HTTP1.1 协议中,同一时间,浏览器会针对同一域名下的请求有一定数量限制),解决了慢启动针对突发性和短时性的http链接低效的问题

3.头信息压缩(首部压缩)

http 2.0支持DEFLATE和HPACK 算法的压缩。

4.推送等提高效率功能(服务端推送)

指客户端请求之前发送数据的机制,在 HTTP 2.0 中,服务器可以对客户端的一个请求发送多个响应。

5.请求优先级

HTTP 2.0 使用一个31比特的优先值,0表示最高优先级, 2(31)-1表示最低优先级,服务器端就可以根据优先级,控制资源分配,优先处理和返回最高优先级的请求帧给客户端。

1.3) 缓存工作原理

https://segmentfault.com/a/1190000004486640

缓存工作流程

可缓存性:谁可以缓存

public都可以缓存

private只有发起请求的浏览器可以 ,nginx缓存 不能用

no-cache可以缓存 但是要服务器验证 :Last-Modified和Etag

no-store 就是不可缓存

no-transform 代理服务器不可改动缓存内容

到期:

max-age= 浏览器用这个

s-maxage= 专门为代理缓存设置, 如nginx缓存

max-stale=  这个时间内 即使超过max-age 也不去服务器取 就用过期缓存,在请求设置中有效

重新验证:

must-revalidate

proxy-revalidate

Cache-Control:private, max-age=0, must-revalidate

验证:ETag/Last-Modified

ETag

ETag是用来计算文件的内容是否发生变化,比如,你在文件中删除一个空格,这样都算文件内容发生变化。 通常做法是用md5或者SHA1算法,计算出文件的唯一值。 在前端其实都可以完成, 找到一个文件文件解析的md5算法,然后将文件传入,就可以得到ETag的值。 不过这里,我们着重点并不是让你生成Etag,而是看看ETag在缓存中的重要作用。

ETag是HTTP/1.1A的一种办法,由Web服务器生成,并写入响应头中。

//response HeadersETag:"751F63A30AB5F98F855D1D90D217B356"

接着,到了浏览器之后,便缓存在本地。 当下次打开同样的文章时,会在请求头中发送If-None-Match, 给服务器检查文件是否发生变化。如果没有,则告诉浏览器使用本地的,否则返回新文件

//request HeadersIf-None-Match:"751F63A30AB5F98F855D1D90D217B356"

Nginx配置:

打开ngnix.conf文件,检查是否有以下语句:

etag off;

more_set_headers -s 404 -t 'ETag';

more_clear_headers 'Etag';

Last-Modified

这和文档内容信息验证不同,这里采用的是日期验证办法。 即,服务器上会对文件打上一个文件改动的日期,然后客户端接受该日期,下次请求时,返回该日期,服务器验证,如果日期未变,则告诉浏览器使用本地缓存即可。

即,在服务器的相应头中,可以设置Last-Modified,来启用这一缓存协议.

//Response HeaderLast-Modified:Tue,03Mar201501:38:18GMT

接受到这一响应头之后,浏览器会对该文件做一个缓存,并保存该日期。当下次请求的时候,会通过If-Modified-Since将日期传入并验证:

If-Modified-Since:Tue, 03 Mar 2015 01:38:18 GMT

如果日期未变,则告诉浏览器使用缓存。

1.4)https加密

https证书生成

nginx中https配置

浏览器http跳转https

1.5)http 2.0优势

1.信道复用 2.分帧传输 3.Server Push

nginx中http2 配置

客户端接受服务器推送

Chrome查看统计请求详情

相关文章

  • http杂谈

    1.网络5层模型 1.1)http 1.1的特点 1.持久链接 持久连接的特点是:只要任意一端没有明确提出断开连接...

  • HTTP杂谈

    一:HTTP请求由三部分组成,分别是:请求行、消息报头、请求正文 请求行:包括请求方式Method、资源路径URL...

  • 选择杂谈

    原文:http://www.huangruixuan.com/2016/03/26/选择杂谈/

  • HTTP协议杂谈一

    HTTP协议中方法的变更: 0.9版本的http协议中只有GET方法 1.0增加了HEAD和POST方法 1.1 ...

  • WKWebView的cookie问题

    以下内容转载http://xiaozhuanlan.com/topic/2517460839终端杂谈的一篇文章 前...

  • 大厂iOS面试题

    本文来自电脑杂谈[http://www.pc-fly.com/] 面试题 1、多线程的应用 2、GCD实现多个请求...

  • iOS大厂面试问题及答案

    电脑杂谈[http://www.pc-fly.com/] 面试题 1、多线程的应用 2、GCD实现多个请求都完成之...

  • 杂谈:HTTP1.1 与 HTTP2.0 知多少?

    HTTP是应用层协议,是基于TCP底层协议而来。 TCP的机制限定,每建立一个连接需要3次握手,断开连接则需要4次...

  • 创业杂谈--AR App竞品分析

    前序 创业杂谈--起由 创业杂谈--创业方向 创业杂谈--创业团队 那么这篇我们来看看AR App竞品。 在App...

  • 愿景力|194-再谈“趋势交易”-1

    研读峰哥的公众号已经1个月,他写了“峰哥谈交易”系列文章,第35篇讲了“趋势交易杂谈[http://mp.weix...

网友评论

    本文标题:http杂谈

    本文链接:https://www.haomeiwen.com/subject/aapwcctx.html