通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

Client Side Cache和 Server Side Cache的区别

Client Side Cache和 Server Side Cache的区别:1、存储位置不同;2、缓存效率不同;3、缓存对象不同;4、缓存粒度不同;5、缓存过期策略不同;6、缓存的优化手段不同。存储位置不同是指Client Side Cache数据保存在客户端内存或硬盘中,Server Side Cache数据保存在服务器端内存或磁盘中。

一、Client Side Cache和 Server Side Cache的区别

1、存储位置不同

  • Client Side Cache:数据保存在客户端(即浏览器)内存或硬盘中
  • Server Side Cache:数据保存在服务器端内存或磁盘中

2、缓存效率不同

  • Client Side Cache:请求缓存的资源时,不需要向服务器发送请求,减少了网络请求时间和带宽消耗,提高了页面加载速度和用户体验
  • Server Side Cache:在缓存命中时,可以快速返回结果,减轻了服务器的压力,提高了响应速度

3、缓存对象不同

  • Client Side Cache:可以缓存静态文件、复杂的客户端渲染组件、API响应结果等
  • Server Side Cache:通常缓存动态生成的页面、API响应结果等

4、缓存粒度不同

  • Client Side Cache:可以按照每个资源的URL或版本号进行缓存
  • Server Side Cache:可以按照请求的URL、查询参数、头部信息等细分缓存

5、缓存过期策略不同

  • Client Side Cache:可以通过设置HTTP响应头部的Cache-Control、Expires字段控制缓存过期时间
  • Server Side Cache:一般采用定时过期、LRU(Least Recently Used)淘汰等策略控制缓存过期时间

6、缓存的优化手段不同

  • Client Side Cache:可以通过缓存预加载、Traffic Shaping、缓存分片等手段优化
  • Server Side Cache:可以通过缓存穿透的处理、热点数据提前预热等手段优化

二、Client Side Cache简介

客户端缓存通常称为浏览器缓存,尽管客户端缓存是一个稍微宽泛的术语。一旦浏览器从服务器请求数据,它就会将其存储到浏览器创建的文件夹中。 下次打开网页时,它不会调用服务器获取数据,而是从浏览器缓存文件夹中提取数据。

三、Server Side Cache简介

服务器端缓存是一个类似的概念,但稍微复杂一些。一旦用户向网站发出请求,其数据就会存储在服务器上。 下次用户发出请求时,它只需从服务器取回保存的数据,无需从数据库中提取数据,从而节省时间。这些缓存由站点管理员实现,充当浏览器和源服务器之间的中介。 它们通常也基于 HTTP 缓存指令。

四、缓存(Cache)介绍

1、简介

缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快。L1 Cache(一级缓存)是CPU名列前茅层高速缓存。内置的L1高速缓存的容量和结构对CPU的性能影响较大,不过高速缓冲存储器均由静态RAM组成,结构较复杂,在CPU管芯面积不能太大的情况下,L1级高速缓存的容量不可能做得太大。一般L1缓存的容量通常在32—256KB。L2 Cache(二级缓存)是CPU的第二层高速缓存,分内部和外部两种芯片。内部的芯片二级缓存运行速率与主频相同,而外部的二级缓存则只有主频的一半。L2高速缓存容量也会影响CPU的性能,原则是越大越好,普通台式机CPU的L2缓存一般为128KB到2MB或者更高,笔记本、服务器和工作站上用CPU的L2高速缓存较高可达1MB-3MB。由于高速缓存的速度越高价格也越贵,故有的计算机系统中设置了两级或多级高速缓存。紧靠CPU的一级高速缓存的速度较高,而容量最小,二级高速缓存的容量稍大,速度也稍低。

2、工作原理

缓存的工作原理是当CPU要读取一个数据时,首先从CPU缓存中查找,找到就立即读取并送给CPU处理;没有找到,就从速率相对较慢的内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在CPU缓存中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先缓存后内存。

3、主要意义

缓存工作的原则,就是“引用的局部性”,这可以分为时间局部性和空间局部性。空间局部性是指CPU在某一时刻需要某个数据,那么很可能下一步就需要其附近的数据;时间局部性是指当某个数据被访问过一次之后,过不了多久时间就会被再一次访问。对于应用程序而言,不管是指令流还是数据流都会出现引用的局部性现象。

举个简单的例子,比如在播放DVD影片的时候,DVD数据由一系列字节组成,这个时候CPU会依次从头处理到尾地调用DVD数据,如果CPU这次读取DVD数据为1分30秒,那么下次读取的时候就会从1分31秒开始,因此这种情况下有序排列的数据都是依次被读入CPU进行处理。从数据上来看,对于Word一类的应用程序通常都有着较好的空间局部性。用户在使用中不会一次打开7、8个文档,不会在其中某一个文档中打上几个词就换另一个。大多数用户都是打开一两个文档,然后就是长时间对它们进行处理而不会做其他事情。这样在内存中的数据都会集中在一个区域中,也就可以被CPU集中处理。

从程序代码上来考虑,设计者通常也会尽量避免出现程序的跳跃和分支,让CPU可以不中断地处理大块连续数据。游戏、模拟和多媒体处理程序通常都是这方面的代表,以小段代码连续处理大块数据。不过在办公运用程序中,情况就不一样了。改动字体,改变格式,保存文档,都需要程序代码不同部分起作用,而用到的指令通常都不会在一个连续的区域中。于是CPU就不得不在内存中不断跳来跳去寻找需要的代码。这也就意味着对于办公程序而言,需要较大的缓存来读入大多数经常使用的代码,把它们放在一个连续的区域中。如果缓存不够,就需要内存中的数据,而如果缓存足够大的话,所有的代码都可以放入,也就可以获得较高的效率。同理,高端的数据应用以及游戏应用则需要更高容量的缓存。

延伸阅读1:超级缓存工作原理

对于SuperCache而言,硬盘上没有文件的概念,只是用户指定大小的一个一个小格子,例如32k,硬盘上某个小格子里面的内容被读取了,则被缓存在内存里面,下次还读这个小格子的时候,直接从内存读取,硬盘没有任何动作,从而达到了加速的目的。有两种缓存模式:

  • MFU模式:每个小格子被读取的时候,做一个简单的计数,当缓存满的时候,计数值小的先被清出缓存
  • MRU模式:简单的队列,先进先出
相关文章