千家信息网

​缓存技术在提升web前后端系统性能方面的应用是怎样的

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关缓存技术在提升web前后端系统性能方面的应用是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。仔细观察一下我们现有的系
千家信息网最后更新 2026年11月03日​缓存技术在提升web前后端系统性能方面的应用是怎样的

这篇文章将为大家详细讲解有关缓存技术在提升web前后端系统性能方面的应用是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

仔细观察一下我们现有的系统,小到一颗CPU,大到一个在线交易系统。任何性能问题都可以通过一种方式有效的解决,这种方式就是缓存。不错,缓存几乎可以成为解决性能问题的银弹,百发百中。缓存的主要目的是降低数据访问延时,实现手段多种多样,下面对不同种类的缓存进行介绍。

CPU的缓存

能想到的最小粒度的缓存恐怕就是CPU的缓存了。CPU不但有缓存,而且将缓存分成了多种级别,如图1所示,分别是L1、L2和L3 3级缓存。其中L1和L2是一个核心独享的缓存,而L3是同一颗CPU内的多个核心共享的。图1架构是目前CPU中最常见的架构,而CPU关于缓存的架构细节比这个还要复杂。多数CPU是将缓存分为指令缓存和数据缓存2中类型的缓存,有些还有一种称为TLB(translation lookaside buffer)的缓存,用于实现虚拟内存到物理内存的快速转换。

图1 CPU缓存架构

CPU并非生而就有缓存,以Intel的CPU为例,其在1992年才在386 CPU中引入L1 Cache。而L3Cache的引入则到2008年才在Core i3中引入。如图2是不同存储类型访问时延的差异,以寄存器访问为1个时间单位,那么内存的访问在100单位左右。也就是说,内存的访问延时是寄存器的100倍。

图2 不同存储访问性能对比

基于上述原因,在新一代的CPU设计当中增加了缓存模块,其目的就是降低访问内存数据的时延。使用Cache提升性能的原理在于数据访问的局部性特点,分别是区域局部性和时间局部性。

  • Spatial Locality:对于刚被访问的数据,其相邻的数据在将来被访问的概率高。

  • Temporal Locality:对于刚被访问的数据,其本身在将来被访问的概率高。

操作系统缓存

在操作系统层面很多地方都用到了缓存。而操作系统缓存的原理与CPU缓存基本一致,也就2个局部特性。在操作系统中***的缓存恐怕就是文件系统的页缓存了吧。同样参考一下图2,可以看到访问磁盘的时延是内存时延的10万倍,因此Linux操作系统中所有文件系统都采用缓存来提升其读写性能。

除了上面内存访问性能与磁盘访问性能的差异因素外,另外一个因素是机械磁盘随机访问与顺序访问的性能差异。以企业级SATA磁盘为例,随机写的带宽不到1MB/s,而顺序写可以轻松的达到100MB/s,差异多达100倍。产生如此大差异的原因主要是机械磁盘读写数据需要寻址,寻址所消耗的时间占整个请求时间的比例很大。

鉴于上述2个因素的考量,大多数文件系统都实现了基于内存的缓存。这样,用户对于文件系统的访问性能得到了大幅的提升。缓存的主要从两方面提升访问文件系统的性能,一方面是降低对磁盘的直接访问,另外一个方面是将对磁盘的随机访问尽量转换为顺序访问。

对于第一个方面,文件系统数据写入缓存后即认为数据写入成功,向上层返回结果。由于访问内存的性能是访问磁盘性能的10万倍。因此,性能自然可以得到极大的提升。如图3所示的上半部分逻辑,写请求依次将数据写入缓存中。对于读请求也有类似的处理,文件系统中称为预读,也就是将数据提前读取到缓存,从而降低访问磁盘的频度。

图3 文件系统页缓存

对于第二个方面,由于缓存的存在,当从缓存向磁盘刷写数据的时候以数据的LBA进行排序。这样能够降低机械磁盘寻道的时间消耗比例,进而提升系统整体的性能。

Web前端的缓存

在大系统层面我们以Web应用为例介绍从前端到后端的缓存技术。这主要是因为在Web开发领域缓存的应用最为广泛,非常方便我们了解问题。缓存的技术领域很广泛,技术的难度也很深,本文无法面面俱到,只是抛砖引玉。

熟悉前端开发的同学都清楚,一个网站除了动态的内容外,还有很多图片、JS脚本和CSS样表等内容。而图片、JS脚本和CSS等内容一方面量比较大,另外一方面很少变化,除非网站升级。鉴于上述原因,我们是否可以将这些内容缓存到用户的本地磁盘,这样当用户再次访问网站是就可以直接从本地磁盘加载这些内容,而不需要从经过浩瀚的网络。

图4 浏览器页面请求

实质上浏览器已经具备该功能,准确的说不是浏览器,而是HTTP协议。如图我们打开浏览器的调试工具,可以看到请求网页的很多内容并不会从服务器请求,而是从本地磁盘或者内存获取。如图4是请求某个网站页面时部分内容的情况。可以看到很大一部分并非从服务器获取。

图5 Web浏览器缓存处理流程

从本地获取有2个非常明显的好处,一个是页面的响应时间很快,另外一个是Web服务器的压力得到有很大的降低。

在HTTP中是通过其响应消息头来确定是否使用缓存中的内容的,这个消息头就是Cache-control,当然还要其它一些字段的配合。整个缓存处理的流程还是比较复杂的,需要根据不同的字段作出判断,以便确定从哪里获取内容。如图是整个浏览器的处理流程。

图6是通过浏览器的调试工具截获的某东主页的一个图片的响应头内容,从图中可以看出里面包含了缓存控制相关的内容。

图6 Web缓存的HTTP协议

访问链路层面

在Web领域一个请求的链路可能会非常长,比如我们访问一个美国的网站,整个通信链路会跨越整个太平洋,距离近2万公里。即使是阳光也要跑几十毫秒才能完成这段里程,而网络需要经过各种中继设备,耗时将近200ms。试想,一个网页通常有上百个元素组成(例如图片,js脚本等),这样在中国打开一个美国的网站将消耗多少时间?

解决上述问题最为有效的技术就是CDN(Content Delivery Network,内容分发网络)技术,该技术通过分部在离最终用户比较近的边缘服务器提供更快的服务。以上文网站为例,当用户从中国访问美国的网站时,会先从国内的CDN节点获取内容,如果没有才会从美国的源服务器获取内容。因为大部分内容都可以从国内获取,免去了跨越大洋造成的网络延时。

图7 CDN示意图

图7是一个CDN的示意图,其中ORIGINAL SERVER就是源服务器,而EDGE SERVER就是边缘服务器。从图中可以看出,终端用户的访问路径。

Web后端的缓存

对于Web服务来说,通常通过关系型数据来存储数据,而数据库的数据通常存储在磁盘中。在高负载场景下数据库往往会成为性能瓶颈。因此,为了提高整个服务的承载能力,往往在业务服务器和数据库之间添加一个缓存服务。这个缓存服务的原理其实与上述的CPU缓存或者文件系统缓存有异曲同工之妙。

由于对于一个Web服务来说,80%以上的请求都是读请求,Web缓存的设计也正是基于这样一个事实。这些数据完全可以缓存到内存中,从而减少数据库访问的负载。由于缓存承载了绝大多数的读请求,因此整个数据库的负载也得到很大的降低。

图8 Web服务缓存

如图8是使用Redis缓存的Web服务架构,本文只是一个简化的架构,实际架构要复杂的多(需要考虑可靠性和承载能力等)。在本架构中业务服务器会根据请求类型优先访问缓存,并根据策略更新缓存内容。目前使用最多的缓存应该是Redis缓存,大家可以深入了解一下。

缓存在提升系统性能方面的应用。当然,缓存的应用领域比本文涉及的还要多得多。这里只是一个引子,希望大家能够得到一些启发,为自己系统的性能优化提供一些思路。

关于缓存技术在提升web前后端系统性能方面的应用是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

缓存 数据 系统 性能 内容 服务 磁盘 内存 文件 服务器 技术 方面 就是 架构 网站 时间 浏览器 如图 浏览 应用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 汇久创客互联网科技 融势互联网科技 互联网科技美容 中国互联网金融科技基金 哈尔滨新华互联网科技 互联网科技公司招聘 温州喔噻互联网科技有限公司 互联网金融中的现代科技 昭通互联网科技选哪家 成都互联网科技公司工作好不好 消费医药和互联网科技 广州新华互联网科技学校电竞方面 领航科技大厦互联网公司 工业互联网科技成果转化 风投北京互联网科技 山东大美朱楼互联网科技有限公司 唯美互联网科技 银川新华互联网科技学校是国营吗 兰石爱特工业互联网科技分公司 玉溪新华互联网科技怎么选 互联网金融 科技金融 科技创新互联网企业 海南购全球互联网科技 华服互联网科技官网 千方科技属于互联网企业吗 燊美集互联网科技有限公司 互联网金融科技公司的优势 城市宝互联网科技有限公司 普陀区互联网教育科技管理办法 互联网领先科技成果宣传视频
0