在前端性能优化中就需要用到强缓存以及协商缓存来减少资源的请求以及流量的消耗
本篇文章只讲理念,之后有时间再说一下强缓存和协商缓存的实践
首先当我们打开页面时就会加载资源(css,js,img),然后浏览器就会缓存这些资源文件,而强缓存就是设置资源的响应头里面的过期时间为几个月或者几年(这个响应头是需要服务端的同学配合设置的)
比如我随意打开一个网站的资源,查看它的响应头,可以看到这里设置了expires 2020年才过期
这样,浏览器第一次的时候会向服务端请求资源,然后把资源缓存,之后如果再加载到相同的资源文件,就不会再向服务端发起请求,而是从缓存里面找文件,直到文件的缓存时间过期 或者Ctrl+F5强制刷新页面才会向服务器请求
应用场景
比如你网站的图片已经确定十几年都不会变化,那么就可以设置它的过期时间久一点,这样就减少了http请求。
协商缓存
就是指每次请求资源的时候先与服务端进行验证,判断文件有没有被修改过,如果修改过,就从服务端获取修改后的,最新的资源文件
如果没有修改过,那么就从缓存中读取文件
如图,last-modified表示的就是文件的最近修改时间
在nginx 中设置
add_header Cache-Control no-cache;
即可让资源文件使用协商缓存
总而言之,强缓存就是设置一个时间,浏览器在该时间内的资源访问都不会再向服务端发起请求,而是使用缓存中的资源文件
协商缓存则是每次请求资源都向服务端协商,询问服务端文件是否被修改,有改则改,没有改动就用缓存文件