你有没有遇到过这种场景:
当开发发布好项目后,让你线上体验时,你总是刷到老的页面,
接着开发就会说:有缓存,“强刷”一下页面,新的页面就出来了。
然后你操作一番,新页面就真的出来了。
这是为啥呢?今天就给大家做个解释。
1. 什么是缓存?为什么要使用缓存?
说的通俗点,缓存就是临时存放数据的一个“地方”。
缓存有什么作用呢?
使用缓存,都是为了提升性能。
比如你使用了浏览器的“HTTP缓存”来缓存静态资源(就是html/css/js文件),
当你第一次访问一个网站时,浏览器会发起请求从云端拉取,这时候浏览器就会把html、css、js缓存在浏览器内存中,
当你第二次再访问这个网站时,浏览器首先会检测缓存中是否存在这些目标文件,
如果存在的话就直接从缓存中读取,否则就发起请求读取。
直接从缓存中读取文件的话,就加快了页面打开的速度。
这就解答了开篇说的问题啦,当我们发布新版本时,其实每个更改了的文件的文件名基本都会发生变化的,
但是html文件的名字是不会变的,如果html被缓存了,那么你发布了新版本,
当你访问网站时,那极有可能访问到的还是缓存里面的html文件。
所以你看到的还是老的页面。那么这该如何解决呢?
其实我们是可以设置缓存时间的,一般会把html缓存时间设置的短一点,
比如1小时,或者是直接不缓存html文件,这个策略就看具体的业务场景啦。
还有一个办法就是上文说的“强刷”啦,其实“强刷” 就是清缓存的一个操作。
2. 缓存的分类和应用场景
缓存的种类,按照缓存的“地方”不同,我们可以分成以下类型:
1. 浏览器缓存
浏览器缓存指的是缓存数据在浏览器内存中。
浏览器缓存还可以细分为HTTP缓存、localstorage、sessionstorage、indexDB等等。
这里有点超纲了。我就讲我们最常见的HTTP缓存吧。
HTTP缓存就是上文提到的“页面缓存”啦。
我们可以设置缓存的文件类型、缓存的时间。
2. 服务器缓存
服务器缓存指的是缓存数据在服务器中。
我们最常见的服务器缓存就是redis,相信有些同学也听过。
redis一般用来缓存不经常变化的数据,比如登录态。
目的是为了降低数据库压力和加快访问数据的速度。
服务器缓存还可以细分redis、kafka、CDN等等。
到这里就讲完啦~
咱们下期见!