使用缓存会带来巨大的性能提升,还能节省带宽、减少服务端开销,但很多网站对缓存一知半解,让相互依赖的资源出现竞态条件,从而无法同步更新。
使用缓存的最佳实践大体上可以归纳为这两种模式:
模式一:不变内容 + 长时间 max-age
Cache-Control: max-age=31536000 URL 对应的内容绝对不会改变,因此:
浏览器 / CDN 直接将这个资源缓存一年也没问题;
在 max-age指定时间内,缓存副本可以直接使用,不需要与服务端协商;
页面:嘿,我需要 "/script-v1.js"、"/styles-v1.css" 和 "/cats-v1.jpg"。(10:24)
缓存:我这儿都没有。 服务端,你有么?(10:24)
服务端:当然,给你。对了 缓存,把这些资源存起来,一年之内直接用吧。(10:25)
缓存:多谢!(10:25)
页面:赞哦!(10:25)
第二天
页面:嘿,这次我要 "/script- v2.js"、"/styles- v2.css" 和 "/cats-v1.jpg"。(08:14)
缓存:我只有其中一个,先拿去用,剩下的我没有。 服务端,看看?
服务端:好,给你新的 CSS 和 JS 文件。对了 缓存,这些你也留着用一年吧。(08:15)
缓存:超赞!(08:15)
页面:多谢!(08:15)
后来
缓存:嗯,"/script-v1.js" 和 "/styles-v1.css" 有一阵子没被用到。我决定删掉它们。(12:32)
在这种模式中,绝对不会修改某个 URL 的内容,只会改变 URL 本身: php中文网:公益在线php培训,帮助PHP学习者快速成长!
Copyright 2014-2021 https://www.php.cn/ All Rights Reserved | 苏ICP备2020058653号-1