Web请求链路中的缓存

予早 2025-02-21 01:08:24
Categories: Tags:

一、数据库端缓存

二、应用层缓存

应用层缓存这块跟开发人员关系最大,也是平时经常接触的。

应用层缓存的架构也可以分几种:

比较常见的应用层分布式缓存容器,Memcache、共享文件服务器、MemcacheDb、Tokyo Tyrant。 php里面也有比如x-cache,apc等的基于进程的缓存,这种缓存比分布式缓存速度快,但是限于跟应用的一个机器。 java实现的缓存也比较多,比如oscache,jcache ,ehcached等等。

三、前端缓存(服务端缓存)

我们这里说的前端缓存可以理解为一般使用的cdn技术,利用squid等做前端缓冲技术,主要还是针对静态文件类型,比如图片,css,js,html等静态文件。
一般针对静态资源如CSS,JS,图片等使用缓存,原因如下:

前端比较常用的就是squid,Varnish Cache,ncache等等。Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang (vg.no) 使用3台Varnish代替了原来的12台squid,性能比以前更好。

四、客户端缓存(浏览器缓存)

客户端缓存依赖于浏览器的实现,目前一般的浏览器都实现了基于http都信息来缓存相应的文件。浏览器端的缓存,可以让用户请求一次之后,下一次不在从服务器端请求数据,直接从本地缓存读取,可以减轻服务器负担也可以加快用户的访问速度。
浏览器缓存分为强缓存和协商缓存:

强缓存与协商缓存区别:强缓存不发请求到服务器,协商缓存会发请求到服务器。