[日常] 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
上一篇: 每天午睡
下一篇: 完美单例-从此世界安静,不再混淆视听