前端项目中CDN的一些问题【性能优化篇】

1. CDN的概念

CDN(Content Delivery NetWork,内容分发网络),是指利用最靠近每位用户的服务区,更快的将资源发送给用户。
在这里插入图片描述

  • 提高用户的访问速度
  • 减轻服务器压力
  • 提高网站的稳定性和安全性

2. CDN的作用

CDN一般用来托管Web资源(文本、图片和视频等),可供下载的资源,应用程序。使用CDN来加速这些资源的访问。

  1. 性能方面:
    • 用户可以更快的请求资源
    • 资源请求的任务分配给了CDN,减轻了服务器的负载
  2. 安全方面:
    • 防御DDOS:通过监控分析异常流量,限制其请求频率
    • MITM: 从源服务器到CDN节点到ISP,全链路HTTPS通信

中间人攻击(Man-in-the-middle attack,MitM)会在消息发出方和接收方之间拦截双方通讯。举例来说,Wi-Fi 路由器就可以被破解用来进行中间人攻击。

3. CDN的原理

3.1 用户未使用CDN缓存资源的过程

  1. 浏览器通过DNS对域名进行解析,得到此域名的IP地址
  2. 浏览器根据IP地址,向域名的主机发送请求数据
  3. 服务器向浏览器返回响应数据

3.2 用户使用CDN缓存的过程

  1. 本地DNS系统解析请求的URL,发现URL对应的是一个CDN专用的DNS服务器,DNS系统会将域名解析权交给CNAME指向的CDN专用的DNS服务器
  2. CDN专用DNS服务器将CDN的全局负载均衡设备IP地址返回给用户
  3. 用户向CDN的全局负载均衡设备发起数据请求
  4. CDN全局负载均衡设备根据用户的IP地址,以及用户请求的URL,选择距离用户最近的设备,告诉用户向这台设备发送请求
  5. 区域负载均衡设备选择一台合适的缓存服务器来提供服务,将该缓存服务器的IP地址返回给全局负载均衡设备
  6. 全局负载均衡设备吧服务器的IP返回给用户
  7. 用户向缓存服务器发起请求,缓存服务器返回响应请求。
    在这里插入图片描述

4. CDN为什么快?

用户访问 CDN 资源时,比如一个图片资源的URL,会先对URL进行域名解析,解析的过程中发现URL是CDN专用DNS服务器,会将DNS解释权交给CNAME指向的CDN专用的DNS服务器。然后找到CDN全局负载均衡系统,然后全局负载均衡系统选择距离我们最近的设备,告诉我们向这台服务器发送请求,区域负载均衡器选择一台合适的缓存服务器来缓存请求,

参考文献

https://cloud.tencent.com/developer/article/1644270
https://www.yuque.com/cuggz/interview/lph6i8#40cbae254f99a3f15afff95e3993b6eb

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

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

相关文章

【从零认识ECS云服务器 | 快速上线个人网站】阿里云手动搭建WordPress网站

第一步:部署 LAMP/LNMP 环境,需要在ECS实例中安装操作系统(Linux,本例中使用的操作系统版本为CentOS 7.9 64位)、Web服务器软件(Apache/Nginx)、数据库软件(MySQL)、网站…

GIT GUI使用

文章目录 一、新建本地仓库二、推送(push) 一、新建本地仓库 在空白处右键,找到GIT GUI here, 如果没有仓库,出现的是这样的: 如果有仓库,在本地仓库里打开就是这样的: 新建本地…

探索低代码的潜力、挑战与未来展望

低代码开发作为一种新兴的开发方式,正在逐渐改变着传统的编程模式,低代码使得开发者无需编写大量的代码即可快速构建各种应用程序。然而,低代码也引发了一系列争议,有人称赞其为提升效率的利器,也有人担忧其可能带来的…

代码随想录算法训练营 ---第五十八天

今天开启单调栈的征程。 第一题: 简介: 本题有两种解法,第一种:暴力破解 两层for循环 时间复杂度为O(n^2) 超时了 第二种:单调栈解法也是今天的主角。 单调栈是什么? 单调递增栈:单调递增栈…

卡通渲染总结《三》

接上回 卡通渲染总结《二》的描边技术,接下就是其绘画(The Painter)的技术。 Painter 的目的是从 3D 模型中生成平面图像。使用这种方法,可以通过改变阴影和高光参数以及着色计算的权重因子来产生各种样式。 阴影部分 单光源 …

docker网络【重点】

一、网络知识 1、桥接模式:用于链接两个不同网络段的设备,是共享通信的一种方式 2、桥接设备:工作在OSI模型的第二层(数据链路层)。根据MAC地址转发数据帧,类似于交换机,只能转发同一网段&…

状态设计模式

package com.jmj.pattern.state.after;public abstract class LiftState {protected Context context;public void setContext(Context context) {this.context context;}//电梯开启操作public abstract void open();//电梯关闭操作public abstract void close();//电梯运行操…

双目光波导AR眼镜_AR智能眼镜主板PCB定制开发

AR眼镜方案的未来发展潜力非常巨大。随着技术的进步,AR眼镜的光学模块将变得更小巧,像素密度也会增加,实现更高分辨率的画面,甚至能够达到1080P、2K和4K级别的清晰度,从而提升用户的视觉体验。 AR智能眼镜的硬件方面&a…

河南诗词大会规则和流程

河南省诗词大赛是一场充满诗意的盛会,分为小学组、中学组和社会组。流程包括四个环节:“大浪淘沙” 、“月宫折桂” 、“飞花令”和“诗画南阳”。 比赛前两轮为“大浪淘沙”和“月宫折桂”环节,所有赛手采用平板现场答题,时间为2…

企业培训私有化解决方案PlayEdu

本文应网友 林枫 的要求而折腾; 什么是 PlayEdu ? PlayEdu 是一款适用于搭建内部培训平台的开源系统,旨在为企业/机构打造自己品牌的内部培训平台。PlayEdu 基于 Java MySQL 开发;采用前后端分离模式;前端采用 React1…

学习记录---kubernetes中备份和恢复etcd

一、简介 ETCD是kubernetes的重要组成部分,它主要用于存储kubernetes的所有元数据,我们在kubernetes中的所有资源(node、pod、deployment、service等),如果该组件出现问题,则可能会导致kubernetes无法使用、资源丢失等情况。因此…

104.进程创建

目录 进程创建相关的函数 获取当前进程的进程ID(PID) 获取当前进程的父进程ID(PPID) 创建一个新的进程 fork()剖析 调用格式 创建子进程 子进程与父进程 父子进程执行流 代码演示 进程创建相关的函数 Linux中进程ID为pi…

『亚马逊云科技产品测评』活动征文|AWS云服务器EC2实例实现ByConity快速部署

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 前言 亚马逊是全球最大的在线零售商和云计算服务提供商。AWS云服务器在…

vscode 配置 —— snippets、todo tree

一、snippets snippets 主要用于在进行文件及函数进行注释说明时,一键生成自定义格式注释 使用。 1.1 点击 vscode 设置,选择 User Snippets 1.2 编辑 code-snippets 文件 以C 文件注释为例,文件作用注释 fun_cpp_file.code-snippets &am…

新版IDEA中,module模块无法被识别,类全部变成咖啡杯无法被识

新版IDEA中,module模块无法被识别,类全部变成咖啡杯无法被识 如下图: 解决方法:java的Directory文件没有被设置为根目录,解决方法如下: 这是方法之一,还有很多的原因 可能的原因: …

【C语言】函数递归--输出n的k次方

题目描述&#xff1a; 递归实现n的k次方 代码如下&#xff1a; #include<stdio.h> int nk(int n, int k) {if (k > 0)return n * nk(n, k - 1); } int main() {int ret 0;int n 0;int k 0;scanf("%d", &n);scanf("%d", &k);ret nk(n…

【数据库】树形数据组织架构下的封锁并发控制,B树索引并发访问控制,树协议原理及案例分析

数据库并发访问树协议 ​专栏内容&#xff1a; 手写数据库toadb 本专栏主要介绍如何从零开发&#xff0c;开发的步骤&#xff0c;以及开发过程中的涉及的原理&#xff0c;遇到的问题等&#xff0c;让大家能跟上并且可以一起开发&#xff0c;让每个需要的人成为参与者。 本专栏会…

十六、FreeRTOS之FreeRTOS队列集

本节需要掌握以下内容&#xff1a; 1&#xff0c;队列集简介&#xff08;了解&#xff09; 2&#xff0c;队列集相关API函数介绍&#xff08;熟悉&#xff09; 3&#xff0c;队列集操作实验&#xff08;掌握&#xff09; 一、队列集简介&#xff08;了解&#xff09; 一个…

添加新公司代码的配置步骤-Part2

原文地址&#xff1a;配置公司代码 概述 在第一部分中&#xff0c;我讨论并列出了在 SAP 中构建新公司代码时企业结构部分所需的任务。在这篇博客中&#xff0c;我将列出并讨论 FI 模块中需要配置的内容。您还记得本主题涵盖六个部分。 企业结构 - 第 1 部分 FI 配置– 第 2…

【Linux】diff命令使用

diff命令 是一个用于比较两个文件或目录之间差异的命令。它可以显示两个文件之间的行级别差异&#xff0c;并以易于阅读的格式输出结果。 著者 由保罗艾格特、迈克海特尔、大卫海耶斯、理查德史泰尔曼和Len Tower撰写。 diff命令 -Linux手册页 语法 diff [选项] [文件1]…