架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 252|回复: 0

[Web] 【实战】Nginx 之 Web 资源缓存(CDN)

[复制链接]
发表于 2024-7-17 22:10:31 | 显示全部楼层 |阅读模式
在说 Web 缓存之前先说一下 CDN,内容分发网络CDN(Content Delivery Network)是建立并覆盖在承载网之上,由遍布全球的边缘节点服务器群组成的分布式网络。CDN能分担源站压力,避免网络拥塞,确保在不同区域、不同场景下加速网站内容的分发,提高资源访问速度。CDN将源站资源缓存到 IDC 遍布全球的加速节点,当终端用户请求访问和获取源站资源时无需回源,可就近获取CDN节点上已经缓存的资源,提高资源访问速度,同时分担源站压力。

如下图所示:

QQ截图20240717212529.jpg

简单说就是用户访问一些静态资源时,使用了CDN后就不会从源服务器上去获取了,而是通过计算,找出距离当前用户最近的CDN服务,返回数据。

Web 缓存值处于用户与源服务器之间的一种服务,Nginx 本身就提供 Web 缓存功能。其它的还有 Varnish、Squid 和 Cachewall 都是网络缓存代理服务器(某些不光可以提供 Web 缓存)。

关于 Nginx 缓存配置文档:https://nginx.org/en/docs/http/ngx_http_proxy_module.html

首先,当我们第一次访问通过缓存服务访问资源的时候,缓存状态是 MISS,会请求源站进行拉取,如下图:

QQ截图20240717213419.jpg

当我们第二次访问资源的时候,会发现资源已经被缓存下来了,状态是 HIT,如下图:

QQ截图20240717213804.jpg

Nginx 主要配置参数如下:

主要参数介绍:

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=180d use_temp_path=off;

●path:强制参数,指定缓存文件的存放路径。
●levels:定义了缓存目录的层级。每层可以用1(最多16种选择,0-f)或2(最多256种选择,00-ff)表示,中间用 : 分隔。
proxy_cache_path /data/nginx/cache;  代表所有缓存只有一个目录,比如/data/nginx/cache/d7b6e5978e3f042f52e875005925e51b
proxy_cache_path /data/nginx/cache levels=1:2;  代表缓存是二层目录(有16*256=4096个目录),比如/data/nginx/cache/b/51/d7b6e5978e3f042f52e875005925e51b
●keys_zone:强制参数,定义共享内存区的名称和大小,该共享内存用于保存缓存项目的元数据(所有活动的key和缓存数据相关的信息),这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key。
●inactive:删除指定时间内未被访问的缓存文件,默认10分钟。
●max_size:设置了缓存存储的上限,如果不指定,最大会用掉所有磁盘空间。
●use_temp_path:直接把临时文件放在缓存目录中。


proxy_cache my_cache;      #指定用于页面缓存的共享内存,zone名称由proxy_cache_path指令定义
proxy_cache_min_uses 1;   ## 则规定缓存门槛,请求过多少次才缓存,不缓存低频请求,避免浪费。
proxy_cache_valid 200 3m;  #为不同的响应状态码设置不同的缓存时间,此为缓存状态码为200的请求,缓存时长为3分钟
proxy_cache_key $request_uri; #指定缓存文件的key为请求的URI
add_header Nginx-Cache-Status $upstream_cache_status;  #把缓存状态设置为头部信息,响应给客户端
proxy_pass http://webservers;  #设置代理转发的后端服务器的协议和地址

使用 Nginx 缓存代理忽略查询字符串

(完)




上一篇:使用 dotnet-ef 工具生成回滚脚本
下一篇:使用 curl 检查测试网站 HTTP/3 支持情况
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-9-12 21:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表