缓存的种类

浏览器缓存

这是离用户最近的可以作为缓存的地方,而且借助的是用户的“资源”(缓存的数据在用户的终端设备上),性价比可谓最好,让用户帮你分担压力!

当你打开浏览器的开发者工具,看到from cache或者from memory cache、from disk cache的时候,就意味着这些数据已经被缓存在了用户的终端设备上了(没网的时候也能访问到一部分内容就是这个原因)。

这个过程是浏览器替我们完成的,一般用于缓存图片、js、css这些。我们可以通过Http消息头中的Cache-Control来控制它,具体细节这里就不展开了。

js里的全局变量、以及cookie等运用也属于该范畴。

浏览器缓存是在于用户侧的缓存点,所以我们对其的掌控力就差很多,在没有发起新请求的情况下,你无法主动去更新数据。

CDN缓存

提供CDN服务的服务商,在全国甚至是全球部署着大量的服务器节点(可以叫做「边缘服务器」)。

那么将数据分发到这些遍布各地服务器上作为缓存,让用户访问就近的服务器上的缓存数据,就可以起到分摊和假宿效果。

但是需要注意,由于节点众多,更新缓存数据比较缓慢,一般至少是分钟级别。所以一般仅适用于不经常变动的静态数据。

解决方式也是有的,就是在url后面带个自增数或者唯一标示,如?v=1001。因为不同的url会被视作“新”的数据和文件,被重新create出来。

网关(代理)缓存

到这里做缓存就是在你自己的地盘.很多时候我们会在源站前面架一层网关(或者说反向代理,正向代理),为的是做一些安全机制或者统一分流策略的入口.

同时这里也是做缓存的一个好场所。毕竟网关是“业务无关性”的,它能够拦下来的请求,对背后的源站也是很大的受益,减少了大量的CPU运算。

常用的网关(代理)缓存有Varnish,Squid,Ngnix。一般情况下,简单的缓存运用场景,用nginx即可,因为大部分时候我们会用它来做负载均衡,能少引入一个技术就少一份复杂度嘛。如果是大量的小文件可以使用Varnish,而Squid则相对大而全,运用成本也更高一些。

进程内缓存

一个请求能走到这里说明他是和"业务相关"的,需要经过业务逻辑运算.

也正因为如此,从这里开始对缓存的引入成本比前面三种大大增加.因为对缓存与数据库之间的"数据一致性"要求更高.

进程外缓存

技术redis之类的,甚至也可以自己单独写一个程序来专门存放缓存数据,供其他程序远程调用.

数据库缓存

数据库本身自带缓存模块的,基本上你给多少内存它就吃多少内存.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值