HTTP
HTTP 协议,构建在TCP之上, HTTP协议使用了简单的超文本格式, 由request和response构成。
以GET请求为例子:一个 HTTP request包含2部分:请求地址 和 请求头。
一个 HTTP response 包含 3个部分: 状态码, 响应头 和 响应体。
文件信息
Content-Type: application/x-javascript
Content-Length: 2000
压缩
在浏览器和服务器都支持时候,可以使用压缩header来减小响应文本的大小, 这时候使用的header:----------------------------------------
Accept-Encoding: gzip
----------------------------------------
Content-Encoding: gzip
----------------------------------------
注意:ETag不能显示response content是否被gzip过,可以选择禁用ETag
代理缓存
在开启之后gzip之后,需要添加Vary头,代理才会根据一个或者多个header来判断是否改变缓存的响应,否则会将一个gzip过的response发给不支持gzip的browser而导致可能出错。
在server的Vary reponse header中指明缓存策略使用判断的header为 Accept-Encoding
----------------------------------------
Vary: Accept-Encoding
----------------------------------------
这时候代理缓存会 cache 响应的多个版本,根据Accept-Encoding不同缓存不同的版本。
Vary可以指定多