楠木轩

Web前端开发程序员的自我修养:常见缓存种类有什么?

由 泉亮霞 发布于 科技

很多初学前端开发的程序员都不是很清楚缓存这个概念,今天千锋广州前端小编就详细给大家介绍一下,下面一起来看看吧!

缓存可以让原本打开很慢的页面,变得能“秒开”。在我们平时访问的APP、网站几乎都有涉及到缓存的运用,因此缓存也成为每一个前端人员必须要掌握的技术。在接下来小编就给大家介绍一下常见的几种缓存。

想要掌握缓存,你需要了解两个重要的运用方式:预读取和延迟写。

预读取就是预先读取将要载入的数据,也可以称作「缓存预热」。就是在系统对外提供服务之前,先将硬盘中的一部分数据加载到内存中,然后再对外提供服务。

延迟写是指通过缓存机制来加速“写”的过程。是预先将需要写入到磁盘或者数据库的数据,先暂时写入到内存,然后就返回成功。再定时将内存中的数据批量写入到磁盘。

简单来说,预读取是在数据出口加了一道前置的缓冲区。而延迟写就是在数据入口后面加了一道后置的缓冲区。

接下来就是Web前端入门课程的重头戏——常见的缓存种类。

浏览器缓存

这是离用户最近的可以作为缓存的地方,而且借助的是用户的“资源”(缓存的数据在用户的终端设备上),性价比可谓最好,让用户帮你分担压力。浏览器缓存是在于用户侧的缓存点,所以我们对其的掌控力就差很多,在没有发起新请求的情况下,你无法主动去更新数据。

CDN缓存

提供CDN服务的服务商将数据分发到这些遍布各地服务器上作为缓存,让用户访问就近的服务器上的缓存数据,就可以起到压力分摊和加速效果。这在ToC类型的系统上运用,效果格外显著。不过由于节点众多,更新缓存数据比较缓慢,一般至少是分钟级别。所以一般仅适用于不经常变动的静态数据

网关(代理)缓存

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

进程内缓存

将一些数据缓存在站点,或者服务的进程内,这就是进程内缓存。进程内缓存的实现载体,最简单的,可以是一个带锁的Map。也可以使用第三方库,例如leveldb。进程内缓存的好处是,数据读取不再需要访问后端,例如数据库。

进程外缓存

即我们常用的各种分布式缓存,redis、memcached之类。进程外缓存相比进程内缓存会慢些,但存储空间可以横向扩展,不受限制。

数据库缓存

数据库缓存是数据库的内部机制,一般都会给出设置缓存空间大小的配置来让你进行干预。数据库缓存也叫内存杀手,基本上你给多少内存就能吃多少。