关于HTTP的重要字段以及一些重要处理的原理

一.重要处理的原理
1.关于缓存
缓存和CDN:CDN是内容分发网络,其实,可以把它看做是一个内容缓存服务器,不同的运营商,自己使用的CDN(缓存策略)是不一样的。我们将访问的资源存放在离我们最近的CDN服务器上,通过HTTP协议中的cache-contol:max-age来设置缓存时间。当我们下次访问同一资源的时候,通过判断缓存数据是否过期来判断是否重新向源站发出请求。
2.http协议处理视频流
http采用DASH传输视频流,原理是DASH服务器将视频进行了切片,MPD是一个XML,为接收端播放器提供表示不同分片的URL、时序、比特率、清晰度等信息。客户端通过接受、解析MPD文件作为自适应流的依据,客户端基于MPD信息为分片发送HTTP请求,然后客户端的媒体播放器为收到的分片进行解码和播放。
3.断点续传以及多线程下载
请求时设置了一个请求头range的范围,服务器响应Accept-Range字段表示是否接受断点续传,content-Range返回接受的范围即文件大小,进行判断后,返回请求的范围数据,及响应码。
4.关于验证缓存的有效性
(cache-contol>Expires(http1.0))强制缓存>对比缓存(Etag/If-None-Match>Last-Modified/If-Modified-Since)
5.关于分块传输(chunked)
在http中用content-length表示传输的文件的大小,当请求后,响应一个文件的大小的字段,但由于有的文件过大,或者有的文件需要变传输边响应,http这是传输的响应通过Transfer-encoding:chunked
在这里插入图片描述每个块的大小及数据:
在这里插入图片描述最后传输完成是以一个空块,作为结束的。
二、重要字段处理的问题(有些上述已提过,不再赘述)
(一)通用首部字段:
1.Connection:服务器和客户端的连接状态,作用:1.控制不再转发给代理的首部字段,2.管理持久连接
2.via:请求经过代理或网关时,描述这些服务器的信息。作用:该字段的存在,可追踪请求的路径。
(二)请求首部字段
1.referer:判断链接来源,作用:可以防盗链和恶意请求。
2.Accept-Language:请求中,可以根据此字段,返回响应语言的内容(如果存在对应的语言,否则返回默认语言)。
3.host:指定主机名,作用:在网络中解析ip时,多个域名可能对应着一个IP,所以指定主机名能准确找到其服务器。
4.User-Agent:包含请求的主机的操作系统及浏览器的信息,作用:可区分是手机发送的请求,还是PC端。
(三)响应首部字段
1.Accept-Ranges:接受处理事务范围,作用:与range对应。
2.Etag:文件标识。作用:用于请求文件缓存时,文件的内容是否被修改。是否需要重新返回整个文件。
3.Location:跟一个地址。作用:用于资源更新位置后,进行重定位。
4.Vary:跟Accept-Language.作用:对缓存进行控制,从代理服务器收到源服务器返回的包含Vary的响应后,若要进行缓存,仅对包含相同vary指定首部字段的请求返回缓存。

猜你喜欢

转载自blog.csdn.net/sinat_35405613/article/details/84662149