Web Cache

22 篇文章 0 订阅

为什么有缓存这种机制:

程序具有局部性:
	时间局部性:一个数据被访问过,之后也有可能被访问。
	空间局部性:一个数据被访问过,离它较近的数据也有可能被访问。

缓存一般为key-value形式:

key:访问路径,URL
value:web content

一般对热点数据做缓存。

命中:在缓存中找到所请求的资源。

命中率:hit/(hit+miss)
	文档命中率:按命中的文档个数来衡量
	字节命中率:按内容大小来衡量

【注意】

缓存对象;缓存周期;定期清理
缓存空间耗尽:LRU(最近最少使用)
有的数据是不可缓存的,例如部分用户的私有数据

缓存的处理步骤:

接受请求---->解析请求(提取请求的url以及各种首部)---->查询缓存---->新鲜度检测----->创建响应报文---->发送响应报文----->记录日志

新鲜度检测机制:

过期日期:响应报文里告诉你缓存什么时候过期。
	HTTP/1.0  Expires
	例如:Expires:Thu, 04 Jun 2015 23:38:38 GMT
	此时如果客户端节点的时间是 12:00:00则此缓存对于当前客户端来说是不新鲜的。
	HTTP/1.1 Cache-Control : max-age,此网页内容可以存活多长时间。
	例如:Cache-Control:max-age=600
有效性再验证:revalidate,向服务端发送条件式请求。
	如果原始内容未改变,则仅响应首部(不带body部分),响应码未304 Not Modified
	如果原始内容发生改变,则正常响应,响应码为200
	如果原始内容消失,响应404,则此时缓存中的内容也需要删除。

	条件式请求首部:
		If-Modified-Since:基于请求的内容的时间做验证
		If-Unmodfied-Since:
		If-Match:基于内容做验证
			Etag:基于校验码,如果资源内容发生改变,则校验码也会发生改变。
		If-None-Match:
比较好的做法:将过期日期这种方法于条件式请求结合起来。

常见的缓存服务器开源解决方案:varnish,squid。
nginx与apache自身也具有缓存功能。

分布式缓存:CDN

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值