架构设计(四):CDN
架构设计(四):CDN
作者:Grey
原文地址:
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
,当版本号不同的时候,获取的内容也就不一样了。
参考资料
最新文章
- HR函数学习03——维护信息类型1008
- webstorm下的sass自动编译和移动端自适应实践
- 关于Oracle、SqlServer 的sql递归查询
- Multimodal —— 看图说话(Image Caption)任务的论文笔记(三)引入视觉哨兵的自适应attention机制
- ubuntu操作系统以及开发环境的安装
- NOIP2012junior—P1—质因数分解
- 认证模式之Form模式
- Learning ROS for Robotics Programming Second Edition学习笔记(一) indigo v-rep
- react事件绑定,事件传参,input单向数据绑定
- Ceph基础知识和基础架构认识
- html的结构-厂子型的布局
- HDU1043 Eight(八数码:逆向BFS打表+康托展开)题解
- sql语句执行的时间
- VS 2010 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- git 命令合并分支代码
- python闭包和装饰器的理解
- ansible基本模块-cron
- 《python编程从入门到实践》第六章笔记
- l2tp连接不上,修复
- Linux下自动还原MySQL数据库的Shell脚本
热门文章
- 03_配置Java环境变量
- Java 泛型程序设计
- Qemu/Limbo/KVM镜像:Ubuntu Mate 22.04+Wine 7.8
- Oracle安装和卸载
- 非Navicat破解延长14天试用时间
- go-zero docker-compose 搭建课件服务(二):编写courseware rpc服务
- 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2022)-SGCL-DTI:用于DTI预测的监督图协同对比学习
- 27.路由器Routers
- Ubuntu实现电商网站+Mysql主从复制+NFS
- Archlinux + Dwm 配置流程