架构设计(四):CDN

作者:Grey

原文地址:

博客园:架构设计(四):CDN

CSDN:架构设计(四):CDN

CDN 全称 Content delivery network ,即:内容分发网络。

CDN 是一个地理上分散的服务器网络,主要用于提供静态内容。如:图片、视频、CSS、JavaScript 文件等。

还有一种是动态内容缓存,它可以实现基于请求路径、查询字符串、cookies和请求头的HTML页面的缓存。参考Amazon CloudFront 动态内容分发。本文主要介绍 CDN 技术

当用户访问一个网站时,离用户最近的 CDN 服务器将提供静态内容。也就是说,用户离 CDN 服务器越远,网站的加载速度就越慢。架构如下

整个工作流程如下

  • 客户端通过使用一个图像 URL 来获取图片信息。该 URL 的域是由 CDN 提供者提供的。URL 类似如下的形式:https://mysite.cloudfront.net/logo.jpg

  • 如果 CDN 服务器的缓存中没有这张图片,则 CDN 服务器就会从原始服务器中请求该文件。

    • 原始服务器向 CDN 服务器返回该图片,其中包括可选的 HTTP 头 TTL(Time-to-Live),描述图像被缓存多长时间。

    • CDN 缓存图像并将其返回给用户A。图像一直缓存在CDN中,直到 TTL 过期。

  • 另外一个客户端发送请求以获得相同的图像。

  • 只要 TTL 没有过期,图像就会从 CDN 缓存中返回。

使用 CDN 要考虑的因素

  • 成本。CDN 是由第三方供应商运行的,要为进出 CDN 的数据传输付费。缓存不经常使用的内容不会带来明显的好处,还会增加成本,所以,你应该考虑将它们从 CDN 中移出。

  • 设置一个适当的缓存过期时间。对于时间敏感的内容,设置一个缓存过期时间时间是很重要的。缓存过期时间既不能太长也不能太短。如果它是太长,内容可能不再是最新的。如果它太短,它可能会导致重复从原始服务器重新加载内容到 CDN。

  • 考虑你的网站或应用程序如何应对 CDN 故障。如果 CDN 暂时中断,客户应该能够检测到这个问题并从原始服务器请求资源。

  • 如果 CDN 的内容无效了,应该要可以在一个文件过期前从 CDN 中把无效内容删除,有两种删除方式

    • 第一种方式,是使用 CDN 供应商提供的 API 使 CDN 对象失效。
    • 使用版本管理来提供对象的不同版本。可以在 URL 中添加一个参数,比如说版本号,image.png?v=2,当版本号不同的时候,获取的内容也就不一样了。

参考资料

System Design Interview

最新文章

  1. HR函数学习03——维护信息类型1008
  2. webstorm下的sass自动编译和移动端自适应实践
  3. 关于Oracle、SqlServer 的sql递归查询
  4. Multimodal —— 看图说话(Image Caption)任务的论文笔记(三)引入视觉哨兵的自适应attention机制
  5. ubuntu操作系统以及开发环境的安装
  6. NOIP2012junior—P1—质因数分解
  7. 认证模式之Form模式
  8. Learning ROS for Robotics Programming Second Edition学习笔记(一) indigo v-rep
  9. react事件绑定,事件传参,input单向数据绑定
  10. Ceph基础知识和基础架构认识
  11. html的结构-厂子型的布局
  12. HDU1043 Eight(八数码:逆向BFS打表+康托展开)题解
  13. sql语句执行的时间
  14. VS 2010 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
  15. git 命令合并分支代码
  16. python闭包和装饰器的理解
  17. ansible基本模块-cron
  18. 《python编程从入门到实践》第六章笔记
  19. l2tp连接不上,修复
  20. Linux下自动还原MySQL数据库的Shell脚本

热门文章

  1. 03_配置Java环境变量
  2. Java 泛型程序设计
  3. Qemu/Limbo/KVM镜像:Ubuntu Mate 22.04+Wine 7.8
  4. Oracle安装和卸载
  5. 非Navicat破解延长14天试用时间
  6. go-zero docker-compose 搭建课件服务(二):编写courseware rpc服务
  7. 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2022)-SGCL-DTI:用于DTI预测的监督图协同对比学习
  8. 27.路由器Routers
  9. Ubuntu实现电商网站+Mysql主从复制+NFS
  10. Archlinux + Dwm 配置流程