当前位置:首页 > AI技术 > 正文内容

实战讲解Nginx中map指令实现根据变量动态设置缓存时长最佳实践|Duuu笔记

admin2个月前 (04-01)AI技术58

map指令用于Nginx中基于请求特征动态生成缓存时长变量,通过键值映射实现条件化赋值,配合proxy_cache_valid等指令达成精细化缓存控制。

map 指令是 Nginx 中实现“条件化变量赋值”的核心工具,它本身不直接控制缓存,但能基于请求特征(如 URL、Header、参数)生成自定义变量,再配合

proxy_cache_valid

expires

实现精细化缓存时长控制——这才是动态缓存的关键所在。

map 的本质:用键值映射生成新变量

map 不是 if,不能嵌套或写复杂逻辑,它的作用非常纯粹:根据一个源变量的值,查表匹配出目标变量的值。所有匹配必须在 server 块外(通常放在 http 块中)定义,且只支持字符串精确匹配或正则匹配。

例如,想对 API 接口和静态资源设置不同缓存时间:

http {

# 定义缓存时长变量 $cache_ttl

map $request_uri $cache_ttl {

default "10m"; # 默认 10 分钟

~*^/api/v1/users/ "5s"; # 用户接口仅缓存 5 秒

~*^/static/ "1h"; # 静态资源缓存 1 小时

~*\.(js|css|png|jpg)$ "1d"; # 资源文件缓存 1 天

}

server {

location / {

proxy_pass http://backend;

proxy_cache my_cache;

proxy_cache_valid 200 302 $cache_ttl; # 关键:这里引用动态变量

}

}

}

自由画布

百度文库和百度网盘联合开发的AI创作工具类智能体

下载

结合请求头或 Cookie 实现用户级缓存策略

比如对登录用户返回的内容不缓存,未登录用户可缓存更久。这时可借助

$cookie_user_id

$http_authorization

判断身份:

map $cookie_user_id $cache_ttl_for_user {

"" "30m"; # 无 cookie,视为游客,缓存 30 分钟

default "0s"; # 有 user_id,不缓存(等价于禁用)

}

map $http_authorization $cache_ttl_by_auth {

"" "1h";

default "0s";

}

注意:

"0s"

proxy_cache_valid

中表示“不缓存该响应”,不是“缓存 0 秒”;若要彻底跳过缓存,还可加

proxy_cache_bypass $cache_ttl_for_user;

配合使用。

避免常见陷阱:匹配顺序、默认值与正则细节

map 匹配按书写顺序从上到下,遇到第一个匹配即停止,所以正则要放 default 上方,否则永远走不到

正则匹配自动忽略大小写(

~*

),但需注意转义特殊字符,如

^/api\/v1\/

default 必须存在,否则未匹配时变量为空,可能导致

proxy_cache_valid

解析失败或回退为默认行为

map 变量只能用于指令上下文支持变量的地方,像

proxy_cache_valid

支持,但

proxy_cache_path

不支持

验证与调试技巧

动态缓存是否生效,不能只看配置,要实际验证响应头:

curl -I

查看

X-Cache

Cache-Control

头是否符合预期

在 log_format 中加入

$cache_ttl

,通过 access_log 确认每次请求匹配的值

临时加

add_header X-Cache-TTL $cache_ttl;

直观观察变量取值

Nginx reload 后,用

nginx -t

检查语法,map 错误常导致 reload 失败且提示模糊

相关文章

Unity 机器学习 基础

ML-Agents 资产导入 Unity 场景创建 Unity 代码部分 Anaconda 执行 rollerball_config.yaml 机器学习逻辑处理...

【DL】2023年你应该知道的 10 大深度学习算法

3. 循环神经网络 (RNN) 4. 生成对抗网络 (GAN) 5. 径向基函数网络 (RBFN) 6. 多层感知器 (MLP) 7. 自组织图 (SOM)...

什么是人工智能 ?

您可以使用 ML 训练 AI,使其精确、快速地执行任务。这可以通过自动化员工感到吃力或厌烦的业务部分来提高运营效率。同样,您可以使用 AI 自动化来腾出员工资源,用于更复杂和更具创造性的工作。...

bp神经网络是什么网络,神经网络和bp神经网络

1、前馈神经网络:一种最简单的神经网络,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层.各层间没有反馈。 2、BP神经网络:是一种按照误差逆向传播...

AI实战详解:Perplexity 怎么做市场调研 Perplexity 市场分析实操教程【商业】最佳实践|Duuu笔记

掌握Perplexity AI市场调研需五步:一、结构化提问嵌入地域/时间/主体/指标四要素;二、限定PDF等原始信源提升可信度;三、分步提问生成制表符分隔文本以自动导入Excel;四、启用Pro S...

大模型超详细盘点!常用的大模型及其优缺点、有潜力的大模型、国内大模型行业落地的现况、国内大模型优势、挑战与前景

除了上述大模型外,还有一些有潜力的大模型值得关注,如: 华为云——盘古大模型 :华为基于Transformer架构打造的超大规模人工智能模型,具有万亿级别参数,可以在图像、语音...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。