惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Vulnerabilities – Threatpost
V
V2EX
GbyAI
GbyAI
Recent Announcements
Recent Announcements
Microsoft Security Blog
Microsoft Security Blog
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
Y
Y Combinator Blog
C
Check Point Blog
爱范儿
爱范儿
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
美团技术团队
雷峰网
雷峰网
IT之家
IT之家
WordPress大学
WordPress大学
V
Visual Studio Blog
Microsoft Azure Blog
Microsoft Azure Blog
MyScale Blog
MyScale Blog
N
News and Events Feed by Topic
罗磊的独立博客
S
SegmentFault 最新的问题
S
Security Affairs
aimingoo的专栏
aimingoo的专栏
F
Fortinet All Blogs
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
H
Hacker News: Front Page
Google DeepMind News
Google DeepMind News
B
Blog
O
OpenAI News
C
Cisco Blogs
Simon Willison's Weblog
Simon Willison's Weblog
The Last Watchdog
The Last Watchdog
Hacker News: Ask HN
Hacker News: Ask HN
博客园_首页
人人都是产品经理
人人都是产品经理
C
Cybersecurity and Infrastructure Security Agency CISA
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Help Net Security
Help Net Security
月光博客
月光博客
J
Java Code Geeks
L
LangChain Blog
博客园 - 司徒正美
Stack Overflow Blog
Stack Overflow Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
Apple Machine Learning Research
Apple Machine Learning Research
T
The Exploit Database - CXSecurity.com
N
News and Events Feed by Topic
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 陈晓猛

验证网络ipv6的可用性 docker compose对应的内容,创建thread网络后连接设备 ONVIF协议与RTSP协议 OpenClaw:接入minimax-2.5的新手指引 Windows 端 OpenClaw 安装教程(保姆级) 使用zigbee2mqtt模拟发送信息 HA上配置MQTT esphome模拟IOT设备连接到HA ESPHome模拟设备脚本 自制hash_v1和hash_v2种子文件 cf-cache-status共有几种状态分别会在什么情况下产生 接口接入cdn和网页接入cdn的区别 pip安装依赖包报错内容为User defined options,Native files 如何解决 MCP:Trae中集成Playwright 实现网页自动化测试 测试用例设计检查项 如何给Playwright 添加 MCP(Microsoft Playwright Component Testing) npm 无法加载文件npm.ps1 文档收集地址 Ugreen记录验证不同国家码对应的跳转链接 error: command 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\bin\HostX86\x64\cl.exe' failed with exit code 2 解决方案 - 陈晓猛 VScode在顶部生成作者信息 Cursor使用小技巧(待更新) Trae 接入 Claude 3.7:AI 编程工具界的“卷王”,完全免费 提高研发效能——基于 DeepSeek-V3的本地化实践 大模型&ai学习课程一些笔记 P图训练模型 python3安装crypto出错及解决方法 windows搭建syncthing中继服务器和发现服务器
接口 CDN(动态 CDN/API 网关 CDN)测试用例
陈晓猛 · 2025-12-04 · via 博客园 - 陈晓猛

验证接口 CDN 的 缓存有效性、响应性能、稳定性、安全性、兼容性 五大核心能力,确保接口经 CDN 转发后,满足业务实时性、可用性及防护需求(适配 API 接口、前后端分离项目、物联网设备通信等场景)。

源站环境 接口服务(HTTP/HTTPS 协议)、数据库(确保动态数据可模拟变更)、接口文档(明确参数 / 响应格式) CDN 环境 已配置接口域名(如 api.xxx.com)、缓存规则(Cache Key、过期时间)、限流 / 跨域 / CORS 配置 测试工具 接口测试:Postman、JMeter、curl;性能测试:JMeter、Locust;监控工具:Grafana、CDN 后台日志 测试终端 不同地域(国内 / 海外)、不同网络(电信 / 联通 / 移动 / 5G/Wi-Fi)、不同设备(PC / 移动端)
环境类型配置说明
Cache-001 通用静态接口(无动态参数)缓存命中 1. 发送请求 GET /api/config(返回公共配置数据); 2. 记录响应时间和 X-Cache 头; 3. 10 秒内重复发送相同请求 1. 第一次响应 X-Cache: MISS(回源); 2. 第二次响应 X-Cache: HIT(命中缓存); 3. 两次响应数据一致,第二次响应时间<第一次的 50%   Cache-002 动态参数接口缓存排除验证 1. 发送请求 GET /api/user?user_id=123(Cache Key 已排除 user_id); 2. 发送请求 GET /api/user?user_id=456; 3. 查看 CDN 日志 1. 两次请求均返回 X-Cache: MISS(未缓存动态参数接口); 2. 响应数据分别对应不同 user_id,无数据错乱   Cache-003 缓存过期时间验证 1. 发送请求 GET /api/recommend(缓存过期时间设为 60 秒); 2. 30 秒内重复请求(验证命中); 3. 70 秒后再次请求 1. 30 秒内响应 X-Cache: HIT; 2. 70 秒后响应 X-Cache: MISS(缓存过期回源)

image

fdcbadee472059111469eaf9f182f479

image

image

Cache-004 POST 接口缓存控制验证 1. 发送 POST /api/login(提交用户登录信息); 2. 查看响应 X-Cache 头和 CDN 日志 1. 响应 X-Cache: MISS(POST 接口默认不缓存); 2. CDN 日志无缓存记录,直接转发源站  
用例 ID测试场景测试步骤预期结果 
Cache-005 排除动态参数(如 timestamp) 1. 发送请求 GET /api/data?page=1&timestamp=1699999999; 2. 发送请求 GET /api/data?page=1&timestamp=1700000000; 3. 查看缓存命中情况 1. 两次请求均命中缓存(X-Cache: HIT); 2. 响应数据一致(排除 timestamp 后 Cache Key 相同) Cache-006 包含指定请求头(如 Accept-Language) 1. 发送请求时携带 Accept-Language: zh-CN; 2. 发送请求时携带 Accept-Language: en-US; 3. 查看缓存命中情况 1. 两次请求分别缓存,互不影响; 2. 切换语言后响应 X-Cache: MISS,返回对应语言数据
用例 ID测试场景测试步骤预期结果
Cache-007 手动缓存刷新(单 URL) 1. 发送请求 GET /api/config 确认缓存命中(HIT); 2. 在 CDN 后台刷新该 URL; 3. 再次发送请求 1. 刷新后第一次响应 X-Cache: MISS(重新回源); 2. 响应数据为源站最新数据 Cache-008 缓存预热验证 1. 在 CDN 后台对 GET /api/hot 进行缓存预热; 2. 首次发送请求查看 X-Cache 头 1. 首次响应 X-Cache: HIT(预热成功,无需回源); 2. 响应时间<50ms
用例 ID测试场景测试步骤预期结果
Perf-001 跨地域响应时间对比 1. 直接访问源站接口(http://源站IP:端口/api/config),记录国内 / 海外响应时间; 2. 通过 CDN 访问相同接口,记录响应时间 1. 国内地域:CDN 响应时间<源站的 60%; 2. 海外地域:CDN 响应时间<源站的 40%(智能选路优化) Perf-002 并发请求性能验证 1. 用 JMeter 模拟 1000 并发用户访问 GET /api/recommend(缓存 60 秒); 2. 持续 5 分钟,监控 CDN 回源率和响应时间 1. 缓存命中后回源率<10%; 2. 平均响应时间<300ms; 3. 无请求超时(超时率<0.1%) Perf-003 弱网环境响应稳定性 1. 在移动端开启弱网模式(网速 100kbps); 2. 连续发送 10 次 GET /api/data 请求 1. 所有请求均成功响应; 2. 平均响应时间<2 秒; 3. 无数据丢失或响应错乱
用例 ID测试场景测试步骤预期结果
Perf-004 单 IP 限流验证 1. CDN 配置单 IP 每秒最多 50 次请求; 2. 用 JMeter 模拟同一 IP 每秒 100 次请求访问 GET /api/data 1. 前 50 次请求成功(响应 200); 2. 后 50 次请求被限流(响应 429 Too Many Requests); 3. CDN 日志记录限流事件 Perf-005 多源站负载均衡验证 1. CDN 配置 2 个源站(IP1:端口IP2:端口); 2. 模拟 500 并发请求,查看 CDN 转发日志 1. 两个源站的请求分发比例接近 1:1; 2. 单个源站故障时,CDN 自动切换到另一个源站,无请求失败
用例 ID测试场景测试步骤预期结果
Stable-001 72 小时长稳运行测试 1. 用 Locust 模拟 200 并发用户,持续访问 GET /api/health(缓存 10 秒); 2. 监控 CDN 节点状态、源站负载、响应成功率 1. 72 小时内响应成功率 100%; 2. CDN 无节点宕机、无缓存异常(如缓存穿透); 3. 源站 CPU / 内存占用稳定(<70%) Stable-002 源站故障降级验证 1. 停止源站接口服务; 2. 发送请求 GET /api/config(CDN 配置降级响应) 1. 响应 503 Service Unavailable,但返回自定义降级信息(如 “服务临时维护,请稍后重试”); 2. 无空白响应或错误页面 Stable-003 网络波动场景验证 1. 模拟 CDN 与源站之间网络中断 10 秒后恢复; 2. 期间持续发送请求 1. 网络中断时,已缓存接口正常响应(HIT); 2. 未缓存接口响应 504 Gateway Timeout; 3. 网络恢复后,所有请求正常回源(MISS
用例 ID测试场景测试步骤预期结果
Security-001 DDoS 攻击防护验证 1. 用工具模拟 TCP 洪水攻击 CDN 接口域名; 2. 同时发送正常请求 GET /api/data 1. 攻击流量被 CDN 拦截,源站无明显负载波动; 2. 正常请求响应正常(响应时间<500ms) Security-002 接口参数注入攻击防护 1. 发送请求 GET /api/user?user_id=123' OR 1=1--(SQL 注入尝试); 2. 发送请求 POST /api/submit,请求体含 <script>alert(1)</script>(XSS 尝试) 1. CDN WAF 拦截攻击请求,响应 403 Forbidden; 2. 源站日志无攻击请求记录 Security-003 HTTPS 加密验证 1. 通过 CDN 访问 HTTPS://api.xxx.com; 2. 查看证书信息和 TLS 版本 1. 证书有效(与域名匹配,未过期); 2. 支持 TLS 1.2/1.3 协议; 3. 无 HTTP 降级(HTTP 请求自动跳转 HTTPS) Security-004 接口鉴权转发验证 1. 发送无鉴权头(如 Authorization: Token xxx)的请求; 2. 发送鉴权信息错误的请求; 3. 发送正确鉴权信息的请求 1. 无鉴权头 / 鉴权错误时,CDN 直接返回 401 Unauthorized(无需回源); 2. 鉴权正确时,正常转发到源站并返回数据
用例 ID测试场景测试步骤预期结果
Compat-001 HTTP/3(QUIC)协议支持 1. 用支持 HTTP/3 的浏览器或工具访问 HTTPS://api.xxx.com; 2. 查看响应头 alt-svc 1. 响应头包含 alt-svc: h3=":443"(支持 HTTP/3); 2. 响应时间比 HTTP/2 快 20%+ Compat-002 CORS 跨域配置验证 1. 从前端域名 https://web.xxx.com 发送跨域请求 GET /api/data; 2. 查看响应头 Access-Control-* 1. 响应头包含 Access-Control-Allow-Origin: https://web.xxx.com; 2. 无跨域报错,请求成功
用例 ID测试场景测试步骤预期结果
Config-001 不缓存接口配置验证 1. CDN 配置 POST /api/pay 不缓存; 2. 多次发送该请求,查看 X-Cache 头 1. 所有请求均返回 X-Cache: MISS(直接回源); 2. 响应数据为实时支付结果 Config-002 防盗链(Referer)验证 1. CDN 配置仅允许 web.xxx.com Referer 访问; 2. 模拟 Referer 为 https://web.xxx.com 发送请求; 3. 模拟 Referer 为 https://恶意域名.com 发送请求 1. 合法 Referer 请求成功; 2. 恶意 Referer 请求被拦截(响应 403)
用例 ID测试场景测试步骤预期结果
Error-001 接口响应超时(源站慢) 1. 模拟源站接口响应超时 10 秒; 2. 通过 CDN 发送请求(CDN 超时配置为 5 秒) 1. CDN 5 秒后返回 504 Gateway Timeout; 2. 不无限等待源站响应 Error-002 接口返回非 200 状态码(如 404/500) 1. 发送请求 GET /api/nonexistent(源站返回 404); 2. 查看 CDN 缓存情况 1. CDN 不缓存 404/500 响应; 2. 后续相同请求均回源,返回最新状态码 Error-003 大体积响应数据(如 10MB JSON) 1. 发送请求 GET /api/large-data(返回 10MB 数据); 2. 查看传输速度和完整性 1. 传输速度>直接访问源站的 2 倍(CDN 带宽优化); 2. 响应数据完整,无截断
用例 ID测试场景测试步骤预期结果
缓存功能 缓存命中规则符合配置,无数据错乱;静态接口缓存命中率≥80%,动态接口不缓存 性能指标 平均响应时间<500ms;并发 1000 时超时率<0.1%;跨地域响应时间优化≥30% 稳定性 72 小时长稳运行响应成功率 100%;源站故障时降级生效,无服务中断 安全性 能拦截常见攻击(SQL 注入、XSS、DDoS);HTTPS 加密正常,鉴权有效 兼容性 支持 HTTP/2/3;跨域配置生效;不同网络 / 设备访问无异常
测试维度合格标准
  1. 测试前需明确接口是否可缓存(如登录、支付接口禁止缓存),避免配置错误导致测试无效;
  2. 缓存测试需重点关注 “动态参数排除”,防止用户个性化数据被缓存(如 user_idtoken);
  3. 性能测试需模拟真实用户分布(不同地域、网络),避免单一环境测试结果失真;
  4. 测试过程中需实时监控 CDN 日志和源站负载,及时定位缓存穿透、回源率过高等问题。

声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/ 如出现转载未声明 将追究法律责任~谢谢合作