HTTP-缓存

本文详细阐述了如何通过缓存技术减少数据传输量、缓解网络瓶颈、降低服务器负载并缩短距离时延。介绍了HTTP的缓存机制,包括命中与未命中规则、层次缓存和ICP等协议,以及缓存处理步骤和过期策略。同时,展示了Web服务器如何设置缓存配置,如利用mod_headers和modexpires模块来优化缓存效果。

1.减少荣誉的数据传输,节省你的网络费用。

2.缓解了网络瓶颈的问题。

3.降低了对原始服务器的要求。

4.缓存降低了距离时延。


命中和未命中

If-Modified-Since会放在GET首部,只有在缓存累对象的副本之后,有对其进行了修改的情况下,才发送此对象。

如果没变化,服务器会发送:

  1. Status Code:
    304 Not Modified 响应

区分命中和未命中的情况

不幸的是,HTTP没有未用户提供一种手段俩区分响应是缓存命中的,还是访问原始服务器的。但是客户端有一种方法可以判断,Date首部,响应中的日期值比较早,通常认为是缓存响应。

层级缓存
一级,二级。。。
网状缓存,由代理根据URL进行转发

HTTP并不支持兄弟缓存,通过扩展协议,因特网缓存协议 ICP,超文本缓存协议HTCP。

缓存的处理步奏
1.接收
2.解析
3.查找
4.新鲜度检测(新鲜度算法)
5.创建响应
6.发送
7.日志

文档过期
Expires首部 
  1. Expires:
    Fri, 26 Sep 2014 07:06:24 GMT
Cache-control首部 
  1. Cache-Control:
    max-age=0

判断
If-Modified-since:<date>
if-None-Match:<tags>

控制缓存
Cache-Control:
no-store 告诉服务器不缓存,并删除
no-cache 客户端会缓存
must-revalidate 在没有跟原始服务器进行在验证的情况下,不能将提供这个对象的陈旧副本。
max-age


试探性过期
LM-Factor算法

Web服务器的缓存设置
1.mod_headers
<IfModule mod_headers.c>  
# htm,html,txt类的文件缓存一个小时  
<filesmatch "\.(html|htm|txt)$">  
header set cache-control "max-age=3600"  
</filesmatch>  
  
# css, js, swf类的文件缓存一个星期  
<filesmatch "\.(css|js|swf)$">  
header set cache-control "max-age=604800"  
</filesmatch>  
</IfModule>
2.modexpires 过期时间
3.mod_cern_meta 

HTTP-EQUIV控制HTML缓存
<META HTTP-EQUIV="pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> 
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
<META HTTP-EQUIV="expires" CONTENT="0"> 
这样做不好,因为服务器软件大多忽略处理这个。

新鲜度算法
有兴趣可以研究


思考:怎么建立缓存服务器?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值