• 浏览器缓存问题,接上篇


    规则

    消息包头

    值/示例

    类型

    作用

    新鲜度

    Pragma

    no-cache

    响应

    告诉浏览器忽略资源的缓存副本,每次访问都需要去服务器拉取【http1.0中存在的字段,在http1.1已被抛弃,使用Cache-Control替代,但为了做http协议的向下兼容,很多网站依旧会带上这个字段】

    Expires

    Mon,15Aug201603:56:47GMT

    响应

    启用缓存和定义缓存时间。告诉浏览器资源缓存过期时间,如果还没过该时间点则不发请求【http1.0中存在的字段,该字段所定义的缓存时间是相对服务器上的时间而言的,如果客户端上的时间跟服务器上的时间不一致(特别是用户修改了自己电脑的系统时间),那缓存时间可能就没啥意义了。在HTTP1.1版开始,使用Cache-Control:max-age=秒替代】

    Cache-Control

    no-cache

    响应

    告诉浏览器忽略资源的缓存副本,强制每次请求直接发送给服务器,拉取资源,但不是“不缓存”

    no-store

    响应

    强制缓存在任何情况下都不要保留任何副本

    max-age=[秒]

    响应

    指明缓存副本的有效时长,从请求时间开始到过期时间之间的秒数

    public

    响应

    任何路径的缓存者(本地缓存、代理服务器),可以无条件的缓存改资源

    private

    响应

    只针对单个用户或者实体(不同用户、窗口)缓存资源

    Last-Modified

    Mon,15Aug201603:56:47GMT

    响应

    告诉浏览器这个资源最后的修改时间。服务器将资源传递给客户端时,会将资源最后更改的时间以“Last-Modified:GMT”的形式加在实体首部上一起返回给客户端【只能精确到秒级,如果某些文件在1秒钟以内,被修改多次的话,它将不能准确标注文件的修改时间】

    If-Modified-Since

    Mon,15Aug201603:56:47GMT

    请求

    其值为上次响应头的Last-Modified值,再次向web服务器请求时带上头If-Modified-Since。web服务器收到请求后发现有头If-Modified-Since则与被请求资源的最后修改时间进行比对。若最后修改时间较新,说明资源又被改动过,则响应整片资源内容(写在响应消息包体内),包括更新Last-Modified的值,HTTP200;若最后修改时间较旧,说明资源无新修改,则响应HTTP304(无需包体,节省浏览),告知浏览器继续使用所保存的cache

    校验值

    ETag

    "fd56273325a2114818df4f29a628226d"

    响应

    告诉浏览器当前资源在服务器的唯一标识符(生成规则又服务器决定)

    If-None-Match

    "fd56273325a2114818df4f29a628226d"

    请求

    当资源过期时(使用Cache-Control标识的max-age),发现资源具有Etage声明,则再次向web服务器请求时带上头If-None-Match(Etag的值)。web服务器收到请求后发现有头If-None-Match则与被请求资源的相应校验串进行比对,决定返回200或304

  • 相关阅读:
    Python
    Python
    Python
    Django REST framework
    Django REST framework
    Django REST framework
    Django REST framework
    jquery.unobtrusive-ajax.js的扩展,做到片段式加载
    jquery.unobtrusive-ajax.js单独的用法
    不复杂的Autofac注入
  • 原文地址:https://www.cnblogs.com/amingxiansen/p/13167179.html
Copyright © 2020-2023  润新知