美文网首页
HTTP缓存机制

HTTP缓存机制

作者: 少_游 | 来源:发表于2021-01-26 15:17 被阅读0次

    web缓存分为:数据库缓存、服务器缓存(代理服务器、cdn缓存)、浏览器缓存
    浏览器缓存分为:http缓存、indexDB、cookie、localstorage
    http缓存分为:强缓存、协商缓存

    强缓存

    浏览器根据资源http头信息,判断是否命中强缓存,如果命中,加载缓存中资源,不会将请求发送到服务器
    1、Expires(http1.0的属性)
    响应头、代表资源过期时间,优先级低于Cache-Control值为max-age=xx秒;GMT格式日期
    缺点:如果强行修改客户端日期,会引起缓存混乱
    2、Cache-control
    请求/响应头属性,缓存控制字段,有一下几个值
    no-store:所有内容都不缓存
    no-cache:浏览器使用换存前,都会请求服务器判断缓存是否为最新
    max-age=x(单位秒):请求后x秒内不再发起请求,http1.1属性,优先级高于Expires
    s-maxage=x(单位秒):代理服务器请求源站缓存后的X秒不再发起请求,只对CDN缓存有效
    public:客户端和代理服务器都可缓存
    private:只有客户端可以缓存

    协商缓存

    如果没有命中强缓存,浏览器会将请求发送到服务器,服务器根据请求头的信息判断浏览器本地的缓存是否过期,如果未过期,返回304,浏览器继续从缓存中加载资源,验证信息的字段分为两个:
    1、Last-Modify、If-Modify-Since
    Last-Modify:请求资源响应头字段,标识该资源最后的修改时间
    If-Modify-Since:请求资源请求头字段,值为上一次请求的Last-Modify,服务器根据该值判断缓存是否过期

    缺点:
    Last-Modify只能精确到秒级,如果1秒内被多次修改,不能标注文件的修改时间
    若果某些文件定期生成,内容没变,Last-Modify变了,导致不能使用缓存
    客户端与服务器时间不一致的情况
    2、ETag、If-None-Match(优先级高于Last-Modify)
    ETag:功能与Last-Modify类似,响应头中字段,不同的是该值为一个校验码,保证资源唯一
    If-None-Match:请求头中字段,值为上一次请求的ETag

    相关文章

      网友评论

          本文标题:HTTP缓存机制

          本文链接:https://www.haomeiwen.com/subject/gzpgzktx.html