最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • HTTP 缓存策略 | 8月更文挑战

    正文概述 掘金(lankongclub)   2021-08-02   785

    背景

    访问浏览器的时候一些静态资源会被缓存下来,下次访问就不用再次拉取数据,减少服务器数据返回。是常见的优化和手段之一

    那么如何缓存,判断依据是什么呢

    强缓存

    判断本地缓存数据中是否有满足的缓存并且未过期,有则直接读取,没有则发起请求。

    Expires

    Expires 属于 HTTP1.0 协议内容,目前主流浏览器主要使用 HTTP1.1 或者 HTTP2协议。判断是否过期根据请求的时间是否小于 Expires 的服务器时间,存在本地时间和服务器时间不同步问题

    Cache-Control

    no-store: 所有内容不被缓存,适用于需要经常变化的文件
    no-cache: 缓存,浏览器使用缓存前判断缓存资源是否最新
    max-age=x(s): 请求缓存后 x 秒不再发起请求
    s-maxage=x(s): 代理服务器请求源服务器 x 秒后不再发起请求,只对 CDN 缓存有效
    public: 客户端和代理服务器都可以缓存
    private: 只有客户端可以缓存
    

    协商缓存

    有些地方会称之为对比缓存。协商缓存不管本地是否有缓存,都会对服务端进行请求,根据返回的标识判断是否需要重新请求。

    Last-Modified / If-Modified-Since

    Last-Modified: 返回资源的最后修改时间

    If-Modified-Since: 二次访问,返回资源最后修改时间。与 Last-Modified 时间对比,大的话需要返回最新数据,小的话返回状态 304 浏览器使用缓存

    Etag / If-None-Match

    Etag: 返回当前请求内容在服务器的标识 If-None-Match: 返回当前资源字啊服务器的标识,和 Etag 进行对比判断资源是否被修改过

    优先级高于 Last-Modified / If-Modified-Since

    nginx配置缓存参考

    server
    {
        # 处理媒体资源文件,缓存为 350天
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp3|wma)$
        {
            expires 350d
        }
        
        # 设置 js 和 css 缓存时间为 360天
        location ~ .*\.(js|css)$
        {
            expires 360d
        }
    }
    

    CDN 缓存

    域名设置 CDN 缓存之后,相当于设置了一个中转站。当浏览器访问到域名,这个请求会被发送到距离浏览器最近的 CDN 服务器上,CDN 会返回源服务器或者返回自身缓存

    可见第一次访问是比没有添加 CND 慢的,如果是多次次访问的话就可以充分体现出距离和缓存的优势。所以如果是经常访问的网站,配置 CDN 缓存是一种不错的优化方式。当然需要均衡费用和好处之间的平衡

    CDN 对于容灾也有不小的作用。当我们设置了 CDN 缓存,在源服务器发生故障的时候能够保持缓存时间内的正常访问,给予开发人员一定的时间缓冲恢复服务

    浏览器访问方式

    1. 浏览器跳转:输入网址、跳转、前进后退

    缓存的配置均会生效

    2. 刷新浏览器

    忽略 Expires max-age,将 Cache-Control 设置成 max-age=0。ETag 和 Last-Modified 生效

    3. 强制刷新

    类似刷新浏览器,不同的是 Cache-Control 设置成 no-cache

    总结

    1. 先判断强缓存,然后判断协商缓存
    2. 合理的配置缓存策略能够达到优化的目的
    3. 目前使用的 HTTP 协议是 HTTP1.1 和 HTTP2 比较多

    思考

    1. 概念题:缓存、强缓存、协商缓存的概念分别是什么

    2. nginx服务器或者node.js配置缓存策略

    3. CDN 的好处

    4. 不同方式刷新浏览器的缓存政策


    起源地下载网 » HTTP 缓存策略 | 8月更文挑战

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元