• [日常] 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

  • 相关阅读:
    Ext js-02 -官方API文档使用
    [Python3网络爬虫开发实战] 1.1-Python3的安装
    什么是关系型数据库?
    htaccess分布式配置文件常用写法
    PHP无限极分类
    svn在linux上的安装
    优化Web中的性能
    Python 面向对象(初级篇)
    文本日期提取
    HMM分词实例
  • 原文地址:https://www.cnblogs.com/taoshihan/p/9932493.html
Copyright © 2020-2023  润新知