1.5 网络中的缓存

1.5.1  Web代理缓存

Web代理缓存将Web代理作为缓存的一种技术。

常用Web代理分类:

    1. 正向代理(一般,Web代理默认说的是正向代理)
      为了从原服务器获取内容,用户向代理服务器发送一个请求并指定目标服务器,然后代理服务器向原服务器转交请求并将获得的内容返回客户端(一般客户端需要特别得设置才能使用正向代理)
    2. 反向代理
      反向代理与正向代理相反,对客户端而言代理服务器像是原服务器,并且客户端不需要设置。客户端向反向代理服务器发送普通请求,接着反向代理将判断向何处转发请求,并将从原服务器获得的内容返回给客户端。
    3. 透明代理
      透明代理的意思是客户端不需要知道代理服务器的存在,由代理服务器改变客户端请求的报文字段,并会传送真是的IP地址。加密的透明代理属于匿名代理,不用设置就可以使用代理了。透明代理的例子就是时下很多公司使用的行为管理软件。

Web代理缓存的作用和浏览器内置缓存类似,只是Web代理缓存介于浏览器和互联网之间。

通过代理服务器进行网络访问时,浏览器不直接请求Web服务器,而是向Web代理发出请求,由代理服务器取回数据再传送给浏览器。如果浏览器请求的数据时Web代理的缓存已经存在并且是最新的那就将缓存数据直接传回浏览器。对企业而言可以提升性能,节省成本。较流行的有Squid。

1.5.2  边缘缓存

使用Web反向代理也可以拥有缓存的作用。反向代理缓存原始服务器的资源,特别是一些静态数据(如图片和文件),很多Web服务器有反向代理的功能,比如Nginx。

如果反向代理服务器能和用户来自同一个网络,那么用户访问反向代理服务器,就会得到很高质量的响应速度,所以可以将这样的反向代理缓存称为边缘缓存。边缘缓存存在于网络上靠近用户的一次,主要向用户提供静态内容,减少对服务器的请求。

边缘缓存一个有名的开源工具就是Varnish。

边缘缓存中典型的商业化服务器就是CDN(Content Delivery NetWork 内容分发网咯)了。如下,使用CDN后,客户端与服务器通信图:

CDN边缘节点的缓存策略因服务商不同而有所变化,但一般都遵循HTTP标准协议,通过HTTP响应头中Cache-Control:max-age 的字段来设置数据缓存时间。若缓存不过期,则直接将缓存返回客户端;否则,CDN节点向源站发出回源请求,从源站拉取最新数据,跟新缓存,并将最新数据返回给客户端。

CDN服务商一般会提供基于文件后缀、目录等多个维度指定CDN上缓存时间,为用户提供更精细化的缓存管理。缓存时间直接影响“回源率”。若CDN缓存时间较短,数据经常失效,数据就会频繁回源,增加源站负载,增大访问延迟。若CDN缓存时间太长,会导致更新变慢。应根据特定业务,来权衡数据缓存的时间。

一般,CDN边缘节点对开发者来说是透明的,可以通过CDN服务商提供的“刷新缓存”接口强制要求CDN边缘节点的数据缓存过期,保证客户端访问到最新资源。

 

posted @ 2020-05-06 15:48  vvf  阅读(100)  评论(0编辑  收藏  举报