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

news2024/9/23 21:27:34

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.coloradmin.cn/o/1285465.html

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

相关文章

GaussDB数据库SQL系列-序列的使用

目录 一、前言 二、GaussDB数据库中的序列 1、语法(CREATE SEQUENCE) 2、注意事项 三、GaussDB数据库中的示例 1、示例一:创建普通序列 2、示例二:创建与表关联的序列 四、小结 一、前言 在数据库管理中,序列(SEQUENCE&a…

前端开发者眼中的Node.js未来发展趋势

前言 随着互联网的高速发展,前端开发领域的技术也在不断演进,各种各样的前端技术日新月异,前端框架也是层出不穷。在这个变化的过程中,Node.js作为一种强大的服务器端运行环境,已经成为前端开发者的重要技术之一&#…

netty源码:(4)ServerBootstrap

ServerBootstrap的group方法用来给成员变量赋值,如下图 AbstractBootstrap为ServerBootstrap的父类。 ServerBootstrap的channel方法用来设置channelFactory成员变量(在父类AbstractBootstrap里) ServerBootstrap的childHandler方法用来给本类的成员…

MySQL笔记-第05章_排序与分页

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第05章_排序与分页1. 排序数据1.1 排序规则1.2 单列排序1.3 多列排序 2. 分页2.1 背景2.2 实现规则2.3 拓展 第05章_排序与分页 讲师&#…

HNU-电路与电子学-2021期末A卷(不含解析)

【写在前面】 电路与电子学好像是从2020级开设的课程,故实际上目前只有2020与2021两个年级考过期末考试。 本份卷子的参考性很高,这是2020级的期末考卷。题目都是很典型的,每一道题都值得仔细研究透。 特别注意:看得懂答案跟写得…

【C++】map和set的使用及注意事项

map和set的使用及注意事项 1.关联式容器2. 键值对3.set3.1接口介绍3.1.1构造3.1.2迭代器3.1.3容量3.1.4修改 3.2set使用及注意事项 4.multiset5.map6.multimap349. 两个数组的交集 1.关联式容器 在初阶阶段,我们已经接触过STL中的部分容器,比如&#xf…

【EI会议征稿中】2024年第四届数字信号与计算机通信国际学术会议(DSCC 2024)

2024年第四届数字信号与计算机通信国际学术会议(DSCC 2024) 2024 4th International Conference on Digital Signal and Computer Communications 第四届数字信号与计算机通信国际会议(DSCC 2024)将于2024年4月12日至14日在中国-香港举行。DSCC 2024旨…

什么是Amazon Lambda(无服务器计算服务)

Lambda 在高可用性计算基础设施上运行代码,用于执行计算资源的所有管理工作。这包括服务器和操作系统维护、容量调配和弹性伸缩、代码和安全补丁部署以及代码监控和日志记录。您只需要提供代码。 最近亚马逊云服务提供了超多免费的云服务,快来领取免费套…

Shein、Temu拓荒背后,中国快递业“卷”向海外

【潮汐商业评论/原创】 在中国互联网行业,软银创始人孙正义有一个耳熟能详的“时光机理论”,意思是充分利用不同国家和行业之间发展的不平衡,在发达市场获取经验,然后利用这些经验去开发落后的市场。从发达市场到落后市场的穿越&…

人体姿态估计算法

人体姿态估计算法 1 什么是人体姿态估计2 基于经典传统和基于深度学习的方法2.1 基于经典传统的人体姿态估计算法2.2 基于深度学习的人体姿态估计算法OpenPoseAlphaPose (RMPE) 3 算法应用4 Paper 人体姿态估计在现实中的应用场景很丰富,如下 动作捕捉:三…

小程序开发

1.准备工作 1.注册公众平台账号(免费)2.下载小程序开发工具(免费) 2.开发步骤 1.第一个小程序 1.小程序的AppID相当于小程序平台的一个身份证,这里使用的是测试号(注意区别于服务号或订阅号的AppID&#xf…

浪潮信息KeyarchOS——保卫数字未来的安全防御利器

浪潮信息KeyarchOS——保卫数字未来的安全防御利器 前言 众所周知,目前流行的操作系统有10余种,每一款操作系统都有自己的特点。作为使用者,我们该如何选择操作系统。如果你偏重操作系统的安全可信和稳定高效,我推荐你使用浪潮信…

服务器巡检表

《服务器巡检表》检查项: 1、系统资源 2、K8S集群 3、Nginx 4、JAVA应用 5、RabbitMQ 6、Redis 7、PostgreSQL 8、Elasticsearch 9、ELK日志系统 获取软件开发全套资料进主页。

连夜整理的6个开源项目,都很实用

偶然找到的这个宝藏网站,站内集齐了大量的开源项目。 推荐实用的项目 1、vueNextAdmin 基于 vue3.x CompositionAPI setup 语法糖 typescript vite element plus vue-router-next pinia 技术,适配手机、平板、pc 的后台开源免费模板,…

分享67个节日PPT,总有一款适合您

分享67个节日PPT,总有一款适合您 67个节日PPT下载链接:https://pan.baidu.com/s/1oU-UUCV_69e8Gp5Y6zrzVA?pwd6666 提取码:6666 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易…

k8s部署单机模式的minio

k8s部署单机模式的minio 一、说明二、yaml内容三、步骤3.1 创建资源3.2 查看启动日志3.2 查看svc并访问控制台 一、说明 项目使用minio,准备在k8s环境部署一套minio试用。 1.关于minio的原理和概念参考: https://mp.weixin.qq.com/s?__bizMzI3MDM5NjgwNg&mid…

vagrant up卡死问题

环境 OS:Windows 10Vagrant:Vagrant 2.2.14VirtualBox:6.1.18 r142142box:CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box 详细信息 解决办法 修改文件Vagrantfile,增加如下配置,测试可以正常启动 conf…

为什么 PostgreSQL 能代替 MongoDB?

在进行技术选型时,需要考虑众多因素,如功能、性能、可靠性、成本效益、社区支持和团队技术能力等,然而,影响最终决定的关键因素的往往是团队 Leader 的技术品味,这也能解释为什么阿里偏爱 Java,而字节跳动更…

判断一个链表是否为回文结构

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 🌤️题目结构 给定一个…

Vue 理解MVVM设计模式

vue作者在最初设计vue的时候参考了mvvm这个模型。没有完全遵循mvvm,是在一定程度上遵循了这个模型。根据这个模型设计了vue里面的模型。 MVVM模型 1.M:模型(Model):对应vue代码当中data中的数据,模型就是vue里面的数据 2.V&#x…