zoukankan      html  css  js  c++  java
  • 缓存小记

    可以从以下一二两个方面来考虑:
    一、客户端浏览器自身的缓存控制(私有缓存)
      1.1:appcache (应用缓存)
        是从浏览器缓存中分出来的一块缓存区,通过manifest file控制
      1.2 :数据存储
        cookie stroge
    二、缓存服务器的控制
      2.1:条件首部 If-Modified-Since
        这是缓存再验证的方法,当缓存过期不新鲜时,使用这个请求首部。
        将这个首部添加到get请求中去,就可以告诉服务器,只有在缓存了对象的副本之后并且又对其进行了
        修改的情况下,才发送此对象给我。如果未被修改服务器则会返回304,已修改就会200ok
    ·   2.2  HTTP/1.0的Expires首部和HTTP/1.1的Cache-Control:max-age响应首部
        max-age使用的是相对时间而不是绝对。
      例:Expires: Fri, 05 Jul 2018, 18:00:00 GMT
      Cache-Control: max-age=444444
      他们都是设置文档的过期时间
      设置之后,在缓存过期之前,无需与服务器联系,除非客户端请求中包含有阻止提供已缓存或未验证资
      源的首部

    三、对一条HTTP GET报文的基本缓存处理过程包括七个部分:
      1.接收,读取抵达的请求报文
      2.解析,缓存对报文进行解析
      3.查询,查看是否有本地副本可用,如果没有就获取一份副本并将其保存在本地
      4.新鲜度检测,查看请求副本是否新鲜,否则就询问服务器是否有任何更新
      5.创建响应
      6.发送
      7.日志
    四、客户端的新鲜度限制
      Cache-Control请求指令
      Cache-Control : max-stale = s 缓存可以随意提供过期的文件,如果指定了参数s,在这段时间内文
      档就不能过期。
      Cache-Control: min-fresh = s 至少在未来s秒内文档要保持新鲜
      Cache-Control : max-age = s 缓存无法返回缓存时间长于s秒的文档,
      Cache-Control : no-cache 除非资源进行再验证,否则这个客户端不会接受已缓存的资源
      Cache-Control : no-store 缓存应该尽快从存储器中删除


    解决方案:
      1.对于静态文件例如图片,css,js文件等可以在路径后面加参数
        例:
        <img src="/images/header/hdgif.gif?v=1.2" class="gif_ico">
        如果对这张图片有修改,只要改变1.2的值,浏览器就会重新去获取
        相应的js文件css文件等都可以

        小幅度的文件替换和图片替换可以使用,但是大范围的更新,需要打包工具设置动态文件名。使用
        webpack

      2.根据上面的内容设置请求头和响应头来控制页面接口数据的缓存。

  • 相关阅读:
    第七章补充 -- 关于文件目录的交互 OS
    第七章 -- 关于文件
    Python 函数声明和调用
    第三章 -- Python的基本数据类型
    关于tomcat控制台乱码
    UTF8MB4 是支持 表情符号的
    ngnix启动不了 解决办法
    关于jmeter 加载jar文件的疑问
    jmeter 使用 随机数据+md5加密注意事项
    jmeter 分布式注意事项
  • 原文地址:https://www.cnblogs.com/jjucap/p/9197202.html
Copyright © 2011-2022 走看看