Fiddler之HTTP协议缓存、压缩与URL Encode

  • Post author:
  • Post category:其他



HTTP协议中的缓存


HTTP缓存:当web请求到达缓存时,如果本地有“已缓存”,就可以从本地缓存设备提取文档,而不需要从服务器中提取

缓存的优点:

1.减少冗余的数据传输,节省传输时间

2.减少了服务器的负担,大大提高了网站的性能

3.加快了客户端加载网页的速度

fiddler中查看缓存的header:

HTTP请求与响应中的Cache

判断缓存是否为最新(新鲜度):

1.浏览器把缓存文件的最后修改时间通过Header“If-Modified-Since”告诉Web服务器

2.浏览器把缓存文件的ETag通过Header “If-None-Match”告诉Web服务器

通过缓存文件的修改时间判断:

1.当浏览器客户端需要请求一个文档,它先查看本地缓存,发现有此文档的缓存,会获取文档的最后修改时间,通过“If-Modified-Since”发送HTTP请求给Web服务器

2.Web服务器收到HTTP请求,将服务器的文档修改时间和HTTP请求中的相比较,如果时间一样,则表示缓存为最新。Web服务器会发送304状态码给客户端,告诉客户端直接使用缓存中的版本

3.如果文档已经更新,Web服务器会发送最新的版本给客户端

与缓存相关的header:

HTTP请求相关:

Cache-Control: max-age=0 以秒为单位

If-Modified-Since: Tue, 24 Mar 2020 08:19:03 GMT 缓存文件的最后修改时间

If-None-Match: “5e79c277-56485” 缓存文件的Etag值

Cache-Control:no-cache 不使用缓存

Pragma:no-cache 不使用缓存

HTTP响应相关:

Cache-Control: max-age=60 60秒后缓存过期(相对时间)

Date: Sun, 12 Apr 2020 01:00:03 GMT 当前响应发送的时间

Expires: Thu, 16 Apr 2020 18:55:17 GMT 缓存过期的时间(绝对时间)

ETag

ETag实体标签,是根据实体内容生成的一段hash字符串,可以标识资源的状态,当资源发送变化,ETag也会发生变化

ETag是服务端生成的,客户端不会关心ETag如何产生

使用Etag是为了解决Last-Modified无法解决的问题

1.一些服务器无法精确得到文件最后修改时间

2.一些文件更新过于频繁

3.一些文件只修改了更新时间,内容并未改变

浏览器不使用缓存

1.强制刷新:Ctrl+F5,浏览器会发送HTTP请求,header中带有Cache-Control:no-cache,明确告诉服务器不使用缓存

2.web服务器会发送最新的文档发送给浏览器客户端

直接使用缓存,不去服务器验证

第一次登陆一个网站,和第二次登陆,session不一样,因为第二次登陆会使用一些缓存,并没有发送HTTP请求

public与private

Cache-Control:public 公有缓存,缓存可以由数千名用户共享

Cache-Control:private 私有缓存,缓存是单个用户专有的


HTTP协议压缩和URL Encode



HTTP压缩


Web服务器和浏览器之间压缩传输“文本内容”的方法,HTTP采用压缩算法,比如用gzip压缩HTML等文件,能减少网络传输的数据量,提供用户显示网页的速度

压缩过程:

1.浏览器发送HTTP请求给Web服务器,请求中header的Accept-Encoding:gzip,deflate告诉服务器,浏览器支持gzip压缩

2.Web服务器收到HTTP请求后生成原始HTTP响应,其中有原始的Connect-Type和Connect-Length

3.Web服务器通过gzip对HTTP响应进行编码,编码后的header中有Connect-Type和Connect-Length,并增加了Connect-Encoding:gzip,然后把HTTP响应发送给浏览器

4.浏览器接收到HTTP响应后,根据Connect-Encoding:gzip对HTTP响应进行解码,获取到原始的HTTP响应后显示出网页

内容编码类型:

gzip表明实体采用GNU zip编码

compress表明实体采用Unix的文件压缩

defalte表明实体使用zlib格式压缩

identity表明没有对实体进行编码;当没有Connect-Encoding header时,默认此情况

gzip、compress、defalte都为无损压缩算法

JPEG文件使用gzip压缩效果不好,gzip占用了一些服务器和客户端的CPU

gzip压缩原理:

gzip压缩是在一个文本文件中找出类似的字符串,并临时替换他们,使整个文件变小


URL Encode


URL编码就是将所有非英文字母、数字符号都替换成百分号后加两位十六进制数,比如空格编码为%20

编码:

单击工具栏TextWizard—>点击编码方式为Encode



版权声明:本文为qq_45331873原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。