龙空技术网

http协议原理解析系列五:web缓存

匆匆那年 212

前言:

今天同学们对“web cache原理”可能比较重视,兄弟们都想要了解一些“web cache原理”的相关文章。那么小编在网上汇集了一些有关“web cache原理””的相关资讯,希望看官们能喜欢,兄弟们快快来了解一下吧!

前言:

在web中,最重要的概念就是web缓存,如果web缓存,每次我们都需要向原始服务器进行请求,不仅对服务器造成压力,还会影响带宽、连接以及时延。

缓存的主要作用:

当资源的缓存副本没有过期之前,请求可以直接在缓存中提取其资源,而不需要远距离的从资源服务器获取。

缓存命中和验证的方法:

当缓存能够存下互联网上所有资源时,所有的请求都可以直接从缓存中获取;这样也就不存在是否命中的概念了。

正式因为缓存能够存储的资源很少,导致每次我们请求获取资源时,都需要识别资源是否存在。资源是否过期。

这其中就设计到缓存再验证,缓存新鲜度检测等方法。

缓存再验证的请求和响应方法:

客户端请求客户端响应服务器资源没有修改首部 if_modifyed_since:日期304 not modified服务器资源被修改首部 if_modifyed_since:日期200 OK 同时返回资源服务器资源已被删除首部 if_modifyed_since:日期404 not found

在缓存命中率计算中,总共有两种计算方式,按照不同的统计维度,文档命中率和字节命中率。

文档命中率:当缓存中存在200个缓存资源副本时,从缓存中能够获取到100个资源文档,那么文档命中率为50%。

字节命中率:当缓存中存在10M字节数据时,从缓存中能够获取到8M字节,则字节命中率为80%。

针对web请求来说,计算文档命中率更好一点。

针对流量计算,字节命中率更好一点。

作为客户端,很难根据响应来区分资源的来源地(缓存还是资源服务器?),除了对响应首部的date首部进行计算才能知道。

代理缓存:

在代理缓存中,最常用的就是内容缓存,也就是CDN。

可以将资源服务器上的常用访问资源保存在CDN上,这样用户在访问时,可以直接在缓存中获取资源。

缓存过期验证方法:cache-control:max-age=86400表示该资源在1天之后过期expires:2017-08-01 17:30:00表示在绝对日期之后过期,一般很少用,存在客户端和服务器之间的时间同步问题

当客户端请求资源时,根据响应首中出现的时间计算发现,资源已经过期,则需要进行资源在验证。

缓存再验证的方法:

1)if-modified-date 在上面已经讲过。

2)if-none-match:实体标签匹配,在请求时发送在首部, ETag首部会在响应中进行返回。

怎样控制缓存中资源:cache-control:no-store在缓存中删除资源,下一次请求必须向原始服务器请求。cache-control:no-cache可以在缓存中保存,但下一次请求无论是否过期,必须进行换在再验证。cache-control:must-revalidate和no-cache功能类似

在apache中,可以通过修改头部模块以及过期模块来控制资源的缓存。

在web服务器中,还可以在响应html主体中,添加<meta http-equiv>标签,作为缓存控制,通常很少用。

本节内容太匆忙,明天输出生存期校验算法和网关中继。

标签: #web cache原理