前端面试除了常见的JS与CSS,也会问一些有关于计算机基础,网路通信类的知识,比如:缓存机制,常见的状态码,三次握手等等,这一篇我们来介绍有关于缓存机制的问题。
缓存机制是一个很大的概念,我们身为前端工程师针对的应该是web端的缓存机制问题,当面对如何优化网站时亦可加入此项于与补充,首先我们先介绍web缓存机制有哪些种类:
1. 数据库缓存
web在向应用服务器读取数据并展示到浏览器的过程中会多次向数据库请求(一般我们存储数据时,都是使用 RDBMS - 关系型数据库),随着数据量的增大与访问的集中就会给服务器带来负担,造成数据库响应恶化,网站显示延迟等重大影响。为了解决这个问题,我们采取在内存中缓存数据库查询结果,下次查询时,直接从内存缓存返回结果,以加快访问速度,缓解数据库压力。
-
Nosql
非关系型数据库(not only sql)
以弥补关系型数据库的不足,用键值方式存储数据,可缓存数据库,其中产品有redis、memcached、mongoDB 。 -
Memcache
分布式内存缓存服务器
使用内存存储方式(重启操作系统会导致全部数据消失),表不互相通信的分布式数据库。 -
Redis
可持久化的分布式内存缓存服务器
有着丰富的数据结构,支持持久化,支持事物 (要么全部执行,要么什么都没做),支持主从。
2. CDN缓存
既服务器端缓存,形象的比喻为源服务器的地方代理,拷贝整个源服务器的内容,主要为了减轻各地对源服务器的访问压力。
在客户端请求数据时,先从本地缓存查找,如果缓存过期,就向CDN边缘节点发起请求。CDN便会检测被请求的数据是否过期,如果过期,CDN再向源站发送请求获取新数据。同时会定时与源服务器交流保持数据更新。
3. 代理服务器缓存
代理服务器是指浏览器和源服务器之间的中间服务器,浏览器先向这个中间服务器发起web请求,由中间服务器处理一些准入业务或基础业务(比如权限验证,缓存匹配等),再将请求转发到源服务器。类似于先看全科医生,了解完具体病症后再转专科医生的过程。
4. 浏览器缓存
包含 HTTP 缓存与应用层缓存
HTTP 缓存是指当浏览器使用 HTTP 协议与服务器通信时,根据一套与服务器约定的规则进行缓存的方式。其中包含强缓存与协商缓存。
应用层缓存是指我们在代码层面上做的缓存,我们熟知的 Cookie、LocalStorage、SessionStorage、indexedDB等。
我们前端工程师能干预的基本只有浏览器缓存这块,接下来我将会用两篇文章详细讲述 HTTP 缓存 与 应用层缓存。
关注 我的手记 以便查看。