架构设计(四):CDN

news2025/3/1 0:11:35

架构设计(四):CDN

作者:Grey

原文地址:

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

CSDN:架构设计(四):CDN

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

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

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

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

img

整个工作流程如下

  • 客户端通过使用一个图像 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94406.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis面试准备

1. redis网站 Redis Redis文档中心 -- Redis中国用户组(CRUG) 数据库排名网站:DB-Engines - Knowledge Base of Relational and NoSQL Database Management Systems 2. 基础知识 磁盘中的寻址速度是毫秒级,内存中寻址速度是纳…

[ vulhub漏洞复现篇 ] struts2远程代码执行漏洞s2-048(CVE-2017-9791)

一、漏洞编号 s2-048 CVE-2017-9791二、影响范围 Apache Struts 2.3.x系列中启用了struts2-struts1-plugin插件的版本三、漏洞描述 Apache Struts2 2.3.x 系列启用了struts2-struts1-plugin 插件并且存在 struts2-showcase 目录,其漏洞成因是当ActionMessage接收客户可控的参…

【论文精读】Focal Inverse Distance Transform Maps for Crowd Localization

文章目录摘要主要贡献主要内容一、FIDT二、LMDS三。I-SSIM loss摘要 在本文中,我们关注人群定位任务,这是人群分析的一个重要课题。基于回归的方法大多使用卷积神经网络( CNN )对密度图进行回归,在极度稠密的场景中无法准确定位实例&#xf…

跨境卖家如何以最少量的预算建立品牌知名度?

关键词:跨境卖家、品牌知名度 什么是品牌知名度? 品牌知名度反映了您的目标受众对您的品牌的了解、认可和记忆程度。 为什么品牌知名度至关重要? 当您的目标受众需要您提供的产品或服务时,您希望他们考虑您的品牌。为此&#xf…

windows下nginx隐藏HTTP 请求头文件中的Server信息

简介 本文主要是隐藏HTTP 请求头文件中的Server信息 解决问题主要分下面几步 一、准备编译所需要的环境 二、修改nginx源码改变配置 三、编译nginx源码生成新的nginx.exe 四、替换nginx.exe,重新启动nginx 1. 准备所需环境 环境都需要准备好,因为编译是…

精品spring boot+MySQL线上点餐系统vue

《spring bootMySQL线上点餐系统》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 使用技术: 操作系统:Windows 10、Windows 7、Windows 8 开发语言:Java 使用框架:spring boot 前端技术&#xff…

大数据毕业设计人体跌倒检测系统

文章目录前言1 实现方法传统机器视觉算法基于机器学习的跌倒检测SVM简介SVM跌倒检测原理算法流程算法效果实现代码深度学习跌倒检测最终效果网络原理最后前言 背景和意义 在美国,每年在65岁以上老人中,平均每3人中就有1人发生意外跌倒,每年…

[附源码]Node.js计算机毕业设计关于人脸识别的实验教学管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

嵌入式分享合集122

一、分析电容降压电路工作原理 电容降压电路,因其成本低廉、体积小而被广泛地使用,此一优点足以掩盖其它所有缺点:输出电流小(一般控制在100mA以内),与市电直通非隔离而存在安全隐患,输出电压波…

饥荒服务器搭建(windows)

文章目录1. 获取服务器票据2. 新建游戏存档3. 饥荒服务器配置1. 获取服务器票据 步骤1:登录Klei官网 步骤2:点击菜单栏游戏——选择饥荒服务器 步骤3:创建服务器获取票据,后面将会用到。 2. 新建游戏存档 步骤1:下载…

Python开发游戏?也太好用了吧

程序员宝藏库:https://gitee.com/sharetech_lee/CS-Books-Store 当然可以啦! 现在日常能够用到和想到的场景,绝大多数都可以用Python实现。 效果怎么样暂且不提,但是得益于丰富的第三方工具包,的确让Python能够很容易…

二进制包安装公有云版k8s

目录公有云版k8s的架构是怎样的公有云中创建k8s实例的过程如下二进制法创建k8s的一般过程Kubernetes的重要性check nodes每台服务器执行基线配置CA rootetcd HA cluster根据CA根证书创建etcd的专有CA证书将etcd注册成为systemd服务配置各master节点的etcd.confansible配置各个m…

4线SPI驱动OLED常规操作

拿到一块点阵屏幕,首先找卖家拿驱动例程 步骤 目录 1.void LCD_IO_Cfg(void) 2.void wr_cmd(u8 wrcmd) 3.void wr_data(u8 wrdata) 4.void init_lcd(void) 5.void disp_all(void) 6.void Fresh(void) 注:根据商家的时序图可以知道数据在上升沿/下降…

[附源码]Node.js计算机毕业设计高校学科竞赛报名系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

CBCC3 – A CBCC Algorithm with Improved Exploration/Exploitation Balance

0、论文背景 本文是在CBCC1和CBCC2的基础上提出了CBCC3。在本文中,证明了过度探索和过度开发是现有CBCC变体中性能损失的两个主要来源。在此基础上,提出了一种新的基于贡献的算法,可以在探索和开发之间保持更好的平衡。 Omidvar M N, Kazimi…

复现readme中的一个坑...

今天在运行一个项目的时候“Molecule Optimization via Fragment-based Generative Models”:GitHub - ninglab/Modof: The implementation of Modof for Molecule Optimization 然后妈的死活运行不出来,就是说在运行readme的时候都不行,我看…

Win10系统下与VMware中Ubuntu20.04建立共享文件夹

一、在VMware中设置 二、在Ubuntu中设置 1.在终端中输入下面命令,列出步骤一中设置的VMware共享文件夹名称,说明可以挂载 ~$ vmware-hgfsclient 返回 ubuntushare 2.执行下面命令,创建共享文件夹专用的挂载目录 ~$ sudo mkdir -p /mnt/hgfs …

基于ESP32-S3方案的2.1寸旋钮屏ZX2D10来了,同步分享ESP32应用功能技术之「WEB API接口」

启明智显基于ESP32-S3与国产芯高效开发平台8ms设计开发的一款磁编码结构的旋钮屏。结构紧凑、简单,外观精致;支持WIFI、蓝牙,语音交互等功能。 产品说明: 1. 使用乐鑫ESP32-S3 WI-FI SOC芯片,SOC提供WI-FI与BLE连接能力…

Java容器源码重点回顾——CopyOnWriteArrayList

1. CopyOnWriteArrayList概述 之前介绍过ArrayList,但是我们知道ArrayList是线程不安全的。如果多个线程同时写数据,就会抛出ConcurrentModificationException。然后我们又学过Vector,它的实现方式是在方法中都加入synchronized关键字&#…

selenium自动测试常用脚本

一、控制已经打开页面的浏览器(已登录状态) 1、简述: 自动化执行时,一些页面操作需要用户是登录状态才能进行访问。如果每次运行自动化脚本都需要重新登录、输入短信验证码,不利于自动化快速运行。因此,需…