小明对项目中的cdn缓存一直不是太明白……

CDN回源

回源原理

  • 回源是指浏览器在发送请求报文时,响应该请求报文的是源站点的服务器,而不是各节点上的缓存服务器(比如nginx开启缓存),那么这个过程相对于通过各节点上的缓存服务器来响应的话就称作为回源。回源的请求或流量太多的话,有可能会让源站点的服务器承载着过大的访问压力,进而影响服务的正常访问。

  • 回源域名一般是cdn领域的专业术语,通常情况下,是直接用ip进行回源的,但是如果客户源站有多个ip,并且ip地址会经常变化,对于cdn厂商来说,为了避免经常更改配置(回源ip),会采用回源域名方式进行回源,这样即使源站的ip变化了,也不影响原有的配置。

  • 常规的CDN都是回源的。即:当有用户访问某一个URL的时候,如果被解析到的那个CDN节点没有缓存响应的内容,或者是缓存已经到期,就会回源站去获取。如果没有人访问,那么CDN节点不会主动去源站拿的。

  • 源站内容有更新的时候,源站可以主动把内容推送到CDN节点。参考阿里云url预热https://help.aliyun.com/knowledge_detail/40106.html?spm=a2c4e.11153987.0.0.419f6ec5UvPSJ1

  • CDN本来是给我们的网站加速的,但是有时会因为不合适的回源策略给服务器带来负担,只有选择正确的策略才能给自己的网站带来更高的访问效率。

CDN回源率计算方法

回源比分为回源请求数比例及回源流量比例两种:

回源请求数比

统计数据来自所有边缘节点上的请求记录,其中,对于没有缓存或缓存过期(可缓存)的请求以及不可缓存的请求,均计入回源请求中,其他直接命中缓存的,则为命中请求。

回源流量比

回源流量是回源请求文件大小产生的流量和请求本身产生的流量 回源流量比=回源流量/回源流量+用户请求访问的流量

CDN常见多级缓存

CDN概念

CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。

CDN工作方法

客户端浏览器先检查是否有本地缓存是否过期,如果过期,则向CDN边缘节点发起请求,CDN边缘节点会检测用户请求数据的缓存是否过期,如果没有过期,则直接响应用户请求,此时一个完成http请求结束;如果数据已经过期,那么CDN还需要向源站发出回源请求(back to the source request),来拉取最新的数据。CDN的典型拓扑图如下:

CDN的典型拓扑图

CDN层级划分:

  • CDN系统中,直接面向用户,负责给用户提供内容服务的的Cache设备都部署在整个 CDN网络的边缘位置,所以将这一层称为边缘层。

  • CDN系统中,中心层负责全局的管理和控制,同时也保存了最多的内容Cache。在边缘层设备未能命中Cache时,需要向中心层设备请求;而中心层未能命中时,则需要向源站请求。不同的CDN系统设计存在差异,中心层可能具备用户服务的能力,也可能只会向下一层提供服务。

  • 如果CDN系统比较庞大,边缘层向中心层请求内容太多,会造成中心层负载压力太大。此时,需要在中心层和边缘层之间部署一个区域层,负责一个区域的管理和控制,也可以提供一些内容Cache供边缘层访问。

CDN缓存

浏览器本地缓存失效后,浏览器会向CDN边缘节点发起请求。类似浏览器缓存,CDN边缘节点也存在着一套缓存机制。

CDN缓存的缺点

CDN的分流作用不仅减少了用户的访问延时,也减少的源站的负载。但其缺点也很明显:当网站更新时,如果CDN节点上数据没有及时更新,即便用户再浏览器使用Ctrl +F5的方式使浏览器端的缓存失效,也会因为CDN边缘节点没有同步最新数据而导致用户访问异常。

CDN缓存策略

  • CDN边缘节点缓存策略因服务商不同而不同,但一般都会遵循http标准协议,通过http响应头中的Cache-control: max-age的字段来设置CDN边缘节点数据缓存时间。

  • 当客户端向CDN节点请求数据时,CDN节点会判断缓存数据是否过期,若缓存数据并没有过期,则直接将缓存数据返回给客户端;否则,CDN节点就会向源站发出回源请求,从源站拉取最新数据,更新本地缓存,并将最新数据返回给客户端。

  • CDN服务商一般会提供基于文件后缀、目录多个维度来指定CDN缓存时间,为用户提供更精细化的缓存管理。

  • CDN缓存时间会对“回源率”产生直接的影响。若CDN缓存时间较短,CDN边缘节点上的数据会经常失效,导致频繁回源,增加了源站的负载,同时也增大的访问延时;若CDN缓存时间太长,会带来数据更新时间慢的问题。开发者需要增对特定的业务,来做特定的数据缓存时间管理。

CDN缓存刷新

CDN边缘节点对开发者是透明的,相比于浏览器Ctrl+F5的强制刷新来使浏览器本地缓存失效,开发者可以通过CDN服务商提供的“刷新缓存”接口来达到清理CDN边缘节点缓存的目的。这样开发者在更新数据后,可以使用“刷新缓存”功能来强制CDN节点上的数据缓存过期,保证客户端在访问时,拉取到最新的数据。

参考文献

  • https://blog.csdn.net/mountains2001/article/details/52766431

  • https://blog.csdn.net/wangxin1982314/article/details/51050206/

  • https://blog.csdn.net/songchunmin_/article/details/69942991

  • https://www.jianshu.com/p/7b749b49201a

欢迎关注微信公众号,获取更多资源

程序员小明

CDN回源原理和CDN多级缓存相关推荐

  1. 简述回源原理和CDN常见多级缓存

    一.CDN回源 1.回源原理 源站内容有更新的时候,源站主动把内容推送到CDN节点. 常规的CDN都是回源的.即:当有用户访问某一个URL的时候,如果被解析到的那个CDN节点没有缓存响应的内容,或者是 ...

  2. 小谈CDN回源函数计算的应用场景

    CDN团队联合函数计算团队近期推出了一个全新功能,即通过CDN把回源流量指向函数计算进行处理,该功能旨在帮助CDN用户能通过函数计算快速处理和便捷处理回源数据为目的,用户仅仅需要在CDN回源地址填写函 ...

  3. cdn回源php_别让CDN的回源把你的服务器拖垮,采用正确的回源策略

    我们有一台服务器提供的服务主要是以动态页面为主,静态页面都是固定的内容平时更新的很少,最近这台服务器的应用升级到了新版本访问量增大了不少,随之的问题就来了,最近每天一到9点负载就超过警戒值,然后负载持 ...

  4. android缓存策略跟cdn,缓存学习(五)CDN缓存(下)-CDN缓存策略、CDN缓存和浏览器缓存之间的关系、回源和回源比...

    CDN缓存策略 CDN(Content Delivery network,内容分发网络),通过GSLB技术使得用户能访问到最近物理机房的文件,以节省网络时间,也就是说一份文件可能会在全国乃至全球的多个 ...

  5. CDN应用进阶 | 正确使用CDN 让你更好规避安全风险

    简介:为了帮助用户更好地了解和使用CDN产品,CDN应用实践进阶系统课程开课了.12月17日,阿里云CDN产品专家彭飞在线分享了<正确使用CDN,让你更好规避安全风险>议题,解读使用CDN ...

  6. 多级缓存架构体系介绍

    整理自b站:[IT老齐004]为什么架构师对多级缓存架构情有独钟? 1.web应用的客户端缓存 主要是对html中图片.css.js.字体等静态资源进行缓存.         具体:通过在浏览器设置E ...

  7. 应用多级缓存模式支撑海量读服务

    缓存技术是一个老生常谈的问题,但是它也是解决性能问题的利器,一把瑞士军刀:而且在各种面试过程中或多或少会被问及一些缓存相关的问题,如缓存算法.热点数据与更新缓存.更新缓存与原子性.缓存崩溃与快速恢复等 ...

  8. bilibili缓存文件在哪里_面试官:你知道什么是网络缓存吗?了解原理?多级缓存架构知道?

    引言 随着一阵阵秋风吹过和一场场秋雨降临,天气早已由热转凉.在这准备步入严寒之际.起早的吒吒辉辉紧紧裹了下被子,鼻子依旧竖立着大鼻涕在那键盘上啪啪啪敲打着.想必大家此刻依旧在清晨甜美的梦乡之中,此刻唯 ...

  9. 设计高并发架构与系统多级缓存架构如何设计?

    高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等. 为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因素,来设计适合自己 ...

  10. 通用图床服务架构解析(百万级回源/天)

    Hulk 图床是支持 360 公司绝大部分业务的图片服务,支持多种图片处理功能,如:裁剪.压缩.滤镜.pHash 计算.人脸识别.格式转换.gif 首帧提取--等等,支持的业务线包括:搜索.图搜.新闻 ...

最新文章

  1. Unity 2D物体移动
  2. 牵引力教育学校分析UI设计师的薪酬水平
  3. mysql(待完善)
  4. 毕业半年,码过5个城市
  5. vue输入框输入触发事件_.vue文件中监听input输入事件oninput详解
  6. 新加坡计算机金融专业,22Fall香港、新加坡名校多个专业申请时间已公布!最快本月截止!...
  7. c++ 工厂模式_Java面试专题之五:设计模式学习,详细分析工厂方法模式
  8. 将图片或其他文档转化成PDF的软件
  9. 【目标检测】39、一文看懂计算机视觉中的数据增强
  10. python字符串加减乘除_从字符串解析加减乘除符号
  11. 【金融基建】证券交易机制(三)(证券估值、拍卖、竞价撮合、做市商交易、市场交易指令、交易时段)
  12. win7 蓝牙4.0 ble驱动_恩智浦发布行业领先的2x2 Wi-Fi 6 +蓝牙解决方案,彻底改变游戏、音频、工业和物联网市场...
  13. 树上分治算法 + 路径剖分
  14. JDK1.8源码分析:LinkedList
  15. 沃尔沃自动驾驶卡车Vera开始在瑞典港口运货 最高时速40公里
  16. 求解关系模式R的候选码
  17. 腾讯大战老干妈,到底是谁输了呢?我笑疯了!
  18. 如何选择和阅读研究文献
  19. Maven学习九:依赖-dependency
  20. 医院计算机招聘笔试内容是什么,医院招聘考试的“内幕”难道你不想知道吗?...

热门文章

  1. linux网络之哪些你不了解的DNS篇
  2. linux配置dhcp服务器authoritative参数作用
  3. 29.【Axure 10 】软件母版功能区域
  4. FMS3.5的安装使用
  5. Python.习题六 字典与集合(下)
  6. 如何使用node批量修改文件后缀名
  7. 如何将英文PDF翻译成中文且格式不变?(PDF免费翻译攻略)
  8. android 手机ssh客户端,android手机ssh客户端ConnectBot
  9. C语言实现 输入两个正整数m和n,求其最大公约数和最小公倍数【学习笔记】
  10. Java实现网页截图技术