欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[日常] HTTP的缓存

程序员文章站 2022-04-15 16:35:23
web缓存: 1.可以自动保存常见文档副本的HTTP设备,当web请求抵达缓存时,如果存在缓存副本,就直接从本地存储设备返回,而不是去源服务器获取 2.缓存命中和未命中 3.HTTP再验证,检测服务器上的内容是否发生了变化,新鲜度检测规则。缓存对副本进行再验证时,会向服务器发送一个小的再验证请求,如... ......
web缓存:
1.可以自动保存常见文档副本的http设备,当web请求抵达缓存时,如果存在缓存副本,就直接从本地存储设备返回,而不是去源服务器获取

2.缓存命中和未命中

3.http再验证,检测服务器上的内容是否发生了变化,新鲜度检测规则。缓存对副本进行再验证时,会向服务器发送一个小的再验证请求,如果没变化,服务器会返回304 not modified,get请求中添加if-modified-since会进行再验证

4.缓存命中率:由缓存提供服务的占比,命中率与缓存大小,用户兴趣相似点,数据的变化,缓存配置等有关,40%的命中率是合理的,对降低整体时延很有好处

5.字节命中率:缓存提供的字节流量在传输流量中的占比,对节省带宽很有利

6.私有缓存,比如web浏览器

7.共有代理缓存,实现层次化的多级缓存很有意义

8.网状缓存,内容路由,对等缓存;有些不是简单的层次结构而是构建复杂的网状关系缓存,这些代理缓存也可以称为内容路由器,icp和htcp协议扩展了http的对等缓存兄弟缓存

9.缓存处理步骤:接收请求=>解析请求=>查询本地副本(获取源服务器)=>新鲜度检测=>创建响应=>发送响应=>记录日志

10.文档过期:服务器返回头信息cache-control 和expires,为文档附加过期时间。cache-control:max-age=484200是相对时间,保存的秒数,用的更多一些

11.服务器再验证:if开头的条件方法头信息进行再验证
    if-modified-since:日期
    if-none-match:实体标签再验证

12.
打开新窗口   如果指定cache-control的值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如:cache-control: max-age=5 表示当访问此网页后的5秒内再次访问不会去服务器.
在地址栏回车  如果值为private或must-revalidate,则只有第一次访问时会访问服务器,以后就不再访问。如果值为no-cache,那么每次都会访问。如果值为max-age,则在过期之前不会重复访问。
按后退按扭   如果值为private、must-revalidate、max-age,则不会重访问,而如果为no-cache,则每次都重复访问.
按刷新按扭   无论为何值,都会重复访问.
cache-control:no-cache就表示不缓存
13.
apache的配置:
3.注释掉apache配置文件中的:
#expiresdefault a0
#header set cache-control "private, must-revalidate, max-age=0, proxy-revalidate, no-transform"
#header set pragma "no-cache"

expiresactive on
expiresdefault "access plus 300 seconds"

14.php文件中的响应头:
header('cache-control: max-age=' . $this->expires);
header('expires: ' . gmdate('d, d m y h:i:s', time() + $this->expires) . ' gmt');
header('pragma: '); // unset pragma header

 

 

[日常] HTTP的缓存

[日常] HTTP的缓存