开发常说的「缓存」到底是什么?

2022-04-01 20:53:04 浏览数 (1)

你有没有遇到过这种场景:

当开发发布好项目后,让你线上体验时,你总是刷到老的页面,

接着开发就会说:有缓存,“强刷”一下页面,新的页面就出来了。

然后你操作一番,新页面就真的出来了。

这是为啥呢?今天就给大家做个解释。

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等等。

到这里就讲完啦~

咱们下期见!

0 人点赞