简单聊聊缓存

有一句老话说的好:计算机科学有两件难事,一是缓存失效,二是取名。既然如此这里就着重记录一下什么是缓存。

你是不是曾经遇到过很多问题,别人给你的解决方案就是清除浏览器缓存或者dns缓存试试能不能解决?我们都听说过这些,但是到底什么是cache?

通俗来说cache就是将东西存储到离请求者更近的地方,这样可以提高访问速度。生活中的算法这本书给出了简单的解释,现在你想写一篇论文,但是你需要参考很多文献资料,这些文献资料都在图书馆中存储,图书馆都相当于一个大的数据库,其实你可以把它借回家然后放到书桌上,什么时候想要参考的时候从书桌上拿起来就好了,不需要再去图书馆,这样大大减少了获取书的时间。此时这个书桌就相当于缓存,它把你需要的东西放到了离你更近的位置,但是你的书桌大小是有限的,能放的书本也是有限的。所以通过这个例子我们很直观的了解到了缓存是快速的且有限的空间。

那么我们的电脑是怎么使用缓存的?

当我们第一次通过浏览器打开bilibili时候,浏览器会缓存网站的图标,缩略图,字体,脚本,然后在之后的访问中这些都不再通过网络请求,通过浏览器直接加载更快更流畅,此时只需要下载们需要的资源。为什么有时候清楚缓存能解决一些问题?因为有时候网站更改了自己的缩略图,但是我们还是通过版本缓存获取的,没有获取最新的内容,所以出现了点问题,显而易见此时我们只需要清除缓存就能够解决这类问题。

在硬件方面,CPU、GPU、SSD也同样都有缓存,这形成了一个内存层次结构,从顶层开始又嵌入cpu的内存,非常小,但是非常快,往下一直到最后是ssd内存,这个结构就像图书馆的结构一样,会把常借用的书本放入一个小柜子里,方便人们快速借阅,而其它的则分布在书架中,需要根据目录去建索获取,最后一些旧书会放入仓库中。

再回到书桌上,一直借阅就会出现你的书桌上堆积满了书本,这个时候我们该怎么办?我们应该使用过期缓存策略,将借阅到期的图书还回图书馆,但是这样就有个弊端就是你的知道每一本你借阅的图书时间,这样会很麻烦。还有一种就是随机还回去一本,这样听起来很糟糕,但是显然实现起来更简单。还是就是将借阅的书里边最长时间没用过的还回去,显然这样的话每次只需要还你书桌上一摞书中最底层的那本就行,也是很easy的。

最后说一句,缓存概念是1965年计算机科学家提出的,至今还在计算机各个组件中使用。


简单聊聊缓存
https://vegetablest.github.io/2020/09/23/简单聊聊缓存/
作者
af su
发布于
2020年9月23日
许可协议