Http
accept-encoding
在服务端开启gzip压缩,请求带有accept-encoding:gzip头的情况下,响应头返回Vary:Accept-Encoding,因为在浏览器和服务器之间会存在一个或多个缓存服务器,而有些缓存服务器的实现会忽略content-encoding头,通过采用Vary:Accept-Encoding头可以避免缓存服务器不知道返回客户端什么版本,是压缩版本还是非压缩版本;
-- 具体可参加HTTP 协议中 Vary 的一些研究
Etag & If-none-match、last-modified & if-modified-since
If-none-match 设置在请求头中,制作一个有条件的请求。对于GET和HEAD请求类型来说,服务器在只要有一个资源的ETag不匹配 if-none-match给出的值数组的情况下,发回一个响应码为200的请求资源包;对于其他的请求方法,如果存在的资源的ETag不匹配if-none-match给定的值数组中的任何一个的话,则服务器受理请求;
last-modified & if-modified-since是判断资源的最后修改时间来检测资源缓存的有效性的,而ETags和if-none-match可以是资源的任何一个属性,比如资源的MD5;
当if-modified-since和if-none-match一块使用时,if-none-match优先判断,如果if-none-match匹配的情况下,再判断if-modified-since