缓存是前端面试的一个常见知识点,下面对于实际项目中如何进行缓存的设置给出方案。
强缓存和协商缓存
浏览器缓存是浏览器将用户请求过的静态资源存储到电脑本地磁盘中,当再次访问时,就可以直接从本地缓存中加载而不需要去向服务器请求了。但是缓存也有缺点,如果服务端资源更新了,客户端没有强制刷新的情况下,看到的内容还是旧的。所以,前端需要根据项目中各个资源的实际情况,做出合理的缓存策略。这就出现了强缓存和协商缓存。
强缓存:通过http的response header中的Cache-Control和Expire两个字段控制。其中Expire基本上已经淘汰了,不用管,主要看Cache-Control的几个取值含义:
private:仅浏览器可以缓存
public:浏览器和代理服务器都可以缓存
max-age=xxx:过期时间
no-cache:不进行强缓存
no-store:不强缓存,也不协商缓存
强缓存步骤:1,第一次请求文件时,缓存中没有该信息,直接请求服务器。
2,服务器返回请求的文件,并且http response header中cache-control为max-age=xxx
3,再次请求该文件时,判断是否过期,如果没有过期,直接读取本地缓存,如果已经过期了,则进行协商缓存。
协商缓存:它的触发条件有两点,其一是Cache-Control 的值为 no-cache,其二是max-age 过期了。协商缓存中还有两个重要的