Web缓存代理和CDN 内容分发网络

目录

1.WEB缓存代理

1.1 WEB缓存代理作用

 1.2 常见WEB缓存代理

1.3 Nginx 配置 缓存代理

2. CDN内容分发网络 


1.WEB缓存代理

1.1 WEB缓存代理作用

存储一些之前给访问过的,且可能要被再次访问的静态网页资源对象,使客户端可以直接从缓存代理服务器获取资源,从而减少上游源服务器的负载压力,加快网站的整体访问速度。
      代理服务器还可以代替客户端去获取源服务器的资源,从而隐藏客户端的真实地址。

 1.2 常见WEB缓存代理

常见的Web缓存代理应用:本地实现 Nginx  Squid  Varnish
                                            云环境远端实现  CDN 

 

数据库缓存代理:Redis  Memcached


1.3 Nginx 配置 缓存代理

初始化系统关闭防火墙

 安装nginx并启动

root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
local.repo  nginx.repo  repo.bak
[root@localhost yum.repos.d]# mount /dev/sr0 /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost yum.repos.d]# yum install -y nginxsystemctl enable --now nginx

7-1 准备页面 


cd /usr/share/nginx/html/
vim test.html<html>
<body>
<h1>this is wangyuan test web page!</h1>
<img src='wy.jpg' /></body>
</html>

7-2准备页面  

cd /usr/share/nginx/html/
vim test.html<html>
<body>
<h1>this is dingzhne test web page!</h1>
<img src='dz.jpg' /></body>
</html>

 

关闭长连接   keepalive_timeout  0; #三台主机都关闭

 

7-5设置网页缓存


创建缓存文件,数据需要写入
[root@localhost ~]# mkdir /data/nginx/cache -p
[root@localhost ~]# chown nginx:nginx /data/nginx/cache
[root@localhost ~]# cd /data/nginx/
[root@localhost nginx]# ll
总用量 0
drwxr-xr-x 2 nginx nginx 6 6月  29 19:35 cache

http {......proxy_cache_path  /data/nginx/cache缓存目录  levels=1目录层级   keys_zone=my_cache:10m 缓存共享内存区的名称和大小      max_size=10g 缓存数据上限   inactive=60m缓存失效时间   use_temp_path=off;是否存放临时文件
#                                             upstream XXXX {server IP:PORT;     #定义上游源服务器的IP和端口   .....}server {listen  IP:PROT;server_name 主机名;location 匹配路径 {proxy_cache  my_cache;                                    #指定缓存共享内存区的名称proxy_cache_valid  200  60m;                              #指定有效缓存的状态码  缓存时间;proxy_cache_key $request_uri;                             #指定缓存数据的key为请求的URLadd_header Nginx_Cache_Status $upstream_cache_status;     #添加请求头显示缓存状态proxy_pass http://192.168.80.10;                                   #设置没有命令缓存时的代理转发proxy_no_cache $自定义变量;                               #通过判断自定义变量是否有值来决定是否进行缓存}    }
}

 

 7-1和7-2相互传输图片,也会做负载均衡

2. CDN内容分发网络 

2.1 什么是CDN

其实 CDN 就是内容分发网络的意思,其英文全称为 Content Delivery Network。简单地说,CDN 可以提前把数据存在离用户最近的数据节点,从而避免长途跋涉经过长途骨干网,最终达到减少骨干网负担、提高访问速度的目的。 

按照我们上面的场景,如果没有 CDN 的话,每次请求都需要从网站服务器经过公网出口、长途骨干网、用户接入局域网,最终到达浏览器。但是当有了 CDN 之后,可能就变成了下面这样:

浏览器请求图片数据时,会先去 CDN 缓存服务器获取。如果获取到数据,那么就直接返回。否则才会经过长途骨干网,最终到达网站服务器获取图片数据。那么只要我们提前在 CDN 缓存服务器上传图片,那么我们就可以极大地减少网络流量,同时减少网络延迟。

从上图我们可能会觉得:这不就是在长途骨干网和用户局域网中间,加了一个服务器嘛。但事实上可并不是这样,CDN 其实还缩短了请求数据的距离。

我们知道用户所处的位置可能是全国各地,为了尽可能地减少网络传输的延时,一般都会在离用户较近的地方设置 CDN 缓存服务器,例如:在华南、华北、华东、西南设置一个主 CDN 服务器,这样各个地区的用户就可以直接请求对应的 CDN 服务器,而不需要来回跑大半个中国,极大地提高了效率!

因此,当我们说内容分发网络的时候,脑海里应该有如下这样一张图片:遍布全国各地的 CDN 缓存服务器,组成了我们的内容分发网络。每次用户请求都会到离他最近的 CDN 服务器请求数据,从而极大地提高访问速度。

2.1 CDN工作流程 

  1. 浏览器发起图片 URL 请求,经过本地 DNS 解析,会将域名解析权交给域名 CNAME 指向的 CDN 专用 DNS 服务器。

  2. CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回给浏览器。

  3. 浏览器向 CDN 全局负载均衡设备发起 URL 请求。

  4. CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的 URL,选择一台用户所属区域的区域负载均衡设备,向其发起请求。

  5. 区域负载均衡设备会为用户选择最合适的 CDN 缓存服务器(考虑的依据包括:服务器负载情况,距离用户的距离等),并返回给全局负载均衡设备。

  6. 全局负载均衡设备将选中的 CDN 缓存服务器 IP 地址返回给用户。

  7. 用户向 CDN 缓存服务器发起请求,缓存服务器响应用户请求,最终将用户所需要偶的内容返回给浏览器。

使用 CDN 服务的网站,只需要将域名解析权交给 CDN 服务商,接着将需要分发的内容上传到 CDN,就可以实现内容加速了!

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

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

相关文章

【代码随想录训练营】【Day 60】【动态规划-13】| Leetcode 647, 516

【代码随想录训练营】【Day 60】【动态规划-13】| Leetcode 647, 516 需强化知识点 动态规划-回文系列 题目 647. 回文子串 注意sum&#xff08;dp&#xff09;不行j的遍历要倒序&#xff0c;并且 for j in range(i, n): class Solution:def countSubstrings(self, s: st…

C++Primer Plus 第十四章代码重用:14.4.7 成员模板

CPrimer Plus 第十四章代码重用 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;CPrimer Plus 第十四章代码重用&#xff1a;14.4.7 成员模板 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如…

KBL410-ASEMI智能AI专用整流桥KBL410

编辑&#xff1a;ll KBL410-ASEMI智能AI专用整流桥KBL410 型号&#xff1a;KBL410 品牌&#xff1a;ASEMI 封装&#xff1a;KBL-4 正向电流&#xff08;Id&#xff09;&#xff1a;4A 反向耐压&#xff08;VRRM&#xff09;&#xff1a;1000V 正向浪涌电流&#xff1a;2…

【计算机毕业设计】基于微信小程序的电子购物系统的设计与实现【源码+lw+部署文档】

包含论文源码的压缩包较大&#xff0c;请私信或者加我的绿色小软件获取 免责声明&#xff1a;资料部分来源于合法的互联网渠道收集和整理&#xff0c;部分自己学习积累成果&#xff0c;供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者…

Python逻辑控制语句 之 判断语句--if语句的基本结构

1.程序执行的三大流程 顺序 分支&#xff08;判断&#xff09; 循环 2.if 语句的介绍 单独的 if 语句,就是 “如果 条件成⽴,做什么事” 3.if 语句的语法 if 判断条件: 判断条件成立&#xff0c;执行的代码…

Python转换图片为BITMAP供OLED屏幕显示

最近在玩ESP32&#xff0c;外接了一个0.96寸的oled屏幕&#xff0c;不想找取模软件了&#xff0c;直接gpt生成代码&#xff0c;小改一下直接用了。 字体下载地址&#xff1a;https://fonts.google.com/selection?queryNotoSans from PIL import Image, ImageDraw, ImageFont…

防止多次点击,vue的按钮上做简易的防抖节流处理

话不多说,上个视频,看看是不是你要的效果 防抖节流 1.创建一个directive.js // directive.js export default {install(Vue) {// 防重复点击(指令实现)Vue.directive(repeatClick, {inserted(el, binding) {el.addEventListener(click, () > {if (!el.disabled) {el.disabl…

Leetcode 450:删除二叉搜索树中的节点

给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除节点可分为两个步骤&#xff1a; 首先…

6月29日,每日信息差

第一、位于四川省绵阳市的中广核质子治疗装备制造基地正式通过竣工验收&#xff0c;为全球装机数量和治疗患者数量最多的国际领先质子治疗系统全面国产化奠定了坚实基础。质子治疗作为目前全球最尖端的肿瘤放射治疗技术之一&#xff0c;与传统放疗技术相比&#xff0c;质子治疗…

C#微信预约挂号系统全套源码,适用于各级公立和民营医院,与院内his、lis、pacs系统对接。

C#微信预约挂号系统源码&#xff0c;团队自主研发&#xff0c;三甲医院应用多年&#xff0c;系统稳定&#xff0c;功能齐全&#xff0c;支持二次开发&#xff0c;项目使用。 微信预约挂号系统可以让患者足不出户就可以利用微信进行在线挂号&#xff0c;实现分时段就诊&#xff…

安装llama_factory

第一版&#xff1a; nvidia-smigit clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory/ llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml pip install --upgrade huggingface_hub llamafactory-cli webui llamafactory-cli webui -…

【LLM 评估】GLUE benchmark:NLU 的多任务 benchmark

论文&#xff1a;GLUE: A Multi-Task Benchmark and Analysis Platform for Natural Language Understanding ⭐⭐⭐⭐ arXiv:1804.07461, ICLR 2019 Site: https://gluebenchmark.com/ 文章目录 一、论文速读二、GLUE 任务列表2.1 CoLA&#xff08;Corpus of Linguistic Accep…

java输出小写的a-z以及大写的Z-A

如果是C语言&#xff0c;可以直接使用格式化输出中的%c 但是Java没有&#xff0c;所以可以1、强制类型转化&#xff1b;2、for循环递增变量中直接定义为char类型 方法一&#xff1a;强制类型转化 //2024.06.29 public class Homework07{public static void main(String[] arg…

卷积、池化小记

卷积和池化是深度学习中&#xff0c;特别是在卷积神经网络&#xff08;CNN&#xff09;中非常重要的两个概念。下面我将分别详细解释卷积和池化的定义、作用以及常见的类型。 卷积&#xff08;Convolution&#xff09; 1. 定义 卷积是通过两个函数f和g生成第三个函数的一种数…

在晋升受阻或遭受不公待遇申诉时,这样写是不是好一些?

在晋升受阻或遭受不公待遇申诉时&#xff0c;这样写是不是好一些&#xff1f; 在职场中&#xff0c;晋升受阻或遭受不公待遇是员工可能面临的问题之一。面对这样的情况&#xff0c;如何撰写一份有效的申诉材料&#xff0c;以维护自己的合法权益&#xff0c;就显得尤为重要。#李…

STM32CUBEMX配置USB虚拟串口

STM32CUBEMX配置USB虚拟串口 cubemx上默认配置即可。 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 配置完后生成工程&#xff0c;主要就是要知道串口的收发接口就行了。 发送&#xff1a;CDC_Transmit_FS()&#xff0c;同时记得包含头文件#include “…

RStudio学习笔记(二):向量

在R语言中&#xff0c;向量类似于数学上的集合概念&#xff0c;由一个或多个元素构成。指用于存储数值型、字符型、逻辑型数据的一维数组。 1、向量的创建 # R语言中向量的创建可以通过函数c()x <- c(1,2,3,4,5) # 存储数值型y <- c("one","two&q…

shopify入门教程-应用开发(二)

4.内网穿透 为什么要用这个&#xff0c;就是把电脑上的开发内容通过内网穿透显示到你的开发店铺上。这里的内网穿透我用了ngrok,花生壳&#xff0c;但都不如shopify官方推荐的cloudflare好用。所以这里我也推荐cloudflare。 运用内网穿透2个步骤 把app运行起来 ​​​​​​​…

YOLO网络结构特点收录

YOLO网络结构特点收录 YOLO&#xff08;You Only Look Once&#xff09;网络结构随着版本迭代不断进化&#xff0c;以下是一些关键版本的网络结构特点概述&#xff1a; YOLOv1 输入&#xff1a;将图像调整至固定尺寸&#xff0c;如448x448像素。骨干网络&#xff1a;初期版本…

java TCP服务器与客户端通信示例

目录 背景: TCP服务代码解析: TCP服务器的代码: 服务器程序的工作流程: TCP客户端代码解析 : TCP客户端代码: 客户端工作流程: 总结: 背景: 如何使用Java编程语言实现一个简单的TCP服务器和客户端。那么TCP是什么?TCP&#xff08;Transmission Control Protocol&…