理解:什么是缓存,什么是文件缓存?

缓存是为了提高系统性能,减少数据库查询,降低服务器资源消耗。本文首先解释了缓存的基本概念,接着通过场景对比说明其优势。然后介绍了正向代理和反向代理,以及Nginx的缓存原理和作用,特别是Nginx如何缓存静态文件。此外,还讨论了浏览器缓存和CDN缓存的工作机制,强调了缓存动态文件和数据时需要注意时效性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

          什么是缓存?所谓的缓存就是,将程序频繁调用的对象,存在服务器系统内存中。以便下次调用时可以直接取系统内存中对象做到快速响应。省去了第一次访问时,对象实例创建和查询数据库等操作。从而,降低服务器资源消耗,提高服务器性能。
举例:
          场景一:电商平台高并发下,10W个人每次访问某个活动商品信息都要去查询数据库,然后封装对象返回;
          场景二:电商平台高并发下,10W个人每次访问某个活动商品信息,只需要在服务器缓存中获取,省去查询数据库的步骤;
          哪一种快,我想显而易见了吧?这里的活动信息,特点是:被频繁访问且该数据短时间内不会变,所以比较适合放缓存

         那么, 接下来开始分别介绍下:什么是文件缓存、内存缓存、分布式缓存~~~

         在介绍之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍:

         1、我们最好先了解一下,什么是正向代理和反向代理?
         在分布式系统架构中,系统内部要访问外部网络时,统一通过一个代理服务器把请求转发出去,在外部网络看来就是代理服务器发起的访问,此时代理服务器实现的是正向代理;当外部请求进入系统时,代理服务器把该请求转发到系统中的某台服务器上,对外部请求来说,与之交互的只有代理服务器,此时代理服务器实现的是反向代理。简单来说,正向代理是代理服务器代替系统内部来访问外部网络的过程,反向代理是外部请求访问系统时,通过代理服务器转发到内部服务器的过程。
         以上, 我用的是Ngnix来做的服务器正向代理和反向代理,并且实现反向代理缓存

         2、Ngnix的缓存原理和作用简述(也叫反向代理缓存)?
         当代理服务器接收到,用户请求Web服务器的请求后,如果用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向WEB服务器发出请求,取回数据,本地缓存后再发送给用户。通过降低对Web服务器的请求数,从而降低了Web服务器的负载。

         3、什么是分布式?
         系统中的多个模块在不同服务器上部署,即可称为分布式系统,如:Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部署在不同服务器上。我们都称之为:分布式

        4、什么负载均衡?
        请求发送到系统时,通过某些方式把请求均匀分发到多个节点上,使系统中每个节点能够均匀的处理请求负载,则可认为系统是负载均衡的。

       5、目前常见的缓存中间件有哪些?
       Redis、Ngnix、Memcache、Ehcache、Varnish。主要都是缓存到本地内存、本地磁盘和缓存在CPU中。

一、文件缓存(以nginx缓存静态文件为例)

         我们先区分先浏览器缓存和nginx缓存,浏览器缓存是用户客户端本地缓存,nginx缓存是服务器端缓存。

       【浏览器缓存原理】:
         举例:用户第一次通过浏览器访问我们服务器的网站的时候,浏览器第一次肯定是没有缓存,所以会从服务器读取整个网站信息(页面、图片、CSS文件、JS文件、https证书、数据等),然后浏览器一般会将(页面、图片、css、js、https证书)缓存到用户本地客户端。以便下次反问只需要发出HTTP请求数据,无需重新加载(图片、CSS、JS)文件,减少对网络带宽的占用,从而提高网站访问速度,提高用户体验也减少服务器负担。

       【nginx文件缓存原理】:
         nginx实现文件缓存,实际上是基于http协议文件缓存机制。请结合前言中概述的nginx缓存原理和实现正向反向代理原理,理解nginx文件缓存原理。
         举例:用户第一次访问我们服务器的Web网站的时候,nginx通过nginx.conf文件,实现反向代理找到Web服务器,读取本次请求所需所有数据文件,然后在根据nginx.conf文件配置缓存规则,缓存文件到指定缓存目录,一般默认缓存存储路径为:/usr/local/nginx/cache。一般Web网站通常都是缓存(静态页面文件、图片、CSS文件、JS文件、)。之后该用户及其他用户在访问该网站时,如果涉及到的文件已经存在nginx缓存,则不会再通过反向代理去服务器中获取。从而也能提高网站访问速度,提高用户体验且减少服务器负担。
       目前,最常见的就是通过nginx来做反向代理web服务器。所以,小伙伴们抽时间一定要好好看看,nginx的相关配置。    

       当然现在还有更方便的,CDN缓存。 有钱的童鞋,直接买阿里云上的CDN服务,再简单配置下,就能使用了。

      那么,这里也简述下CDN缓存的原理:
      举例:阿里云在全国主要城市都部署了CDN应用服务器,这样做的目的就是为了解决,缓存数据能放在离用户最近的地方。避免弱网情况下,一些用户访问数据会很慢。如果能做到就近服务器获取数据,那么就能降低对网络的要求。提高访问响应数据和提高用户体验。一般用于缓存静态资源文件(静态页面、图片、css文件、js文件、等等)。

      注意:不管是nginx文件缓存还是CDN文件缓存,都要注意一个问题。动态文件和数据的时效性,避免出现数据不能实时同步问题。所以,需要注意设置缓存文件失效时间和合理使用静态缓存。

     

                                 后续会补上,什么是内存缓存原理和分部署缓存原理的个人理解。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值