• 首页
首页
高防CDN静态与动态加速,边缘清洗与调度高防IP转发四层转发,业务 IP 高防接入SDK游戏盾客户端集成,游戏业务专属防护高防服务器独享资源,稳定抗 D 与高可用了解更多
游戏解决方案低延迟与防护一体化金融解决方案合规与流量清洗直播解决方案推拉流与边缘加速区块链解决方案Web3 基础设施防护查看方案
技术文档API 与接入指南帮助中心常见问题与帮助文档博客资讯产品动态与最佳实践全球测速多节点网络性能测试标签云按主题聚合全站内容进入文档
关于我们使命与愿景加入我们招聘与内推合作伙伴渠道与生态联系我们咨询与售后联系我们

文档目录

  • 技术文档
  • 最佳实践
文档/缓存配置/缓存规则

缓存规则

速盾网络 团队
技术文档

标签

  • 缓存规则

本页内容

暂无目录

分享文章

𝕏fin

企业级CDN与加速解决方案,AI智能监测优化,实时全方位DDoS/CC防护。全球数万家企业信赖,提供快速、安全、可靠的内容分发与抗DDOS攻击服务。

产品

  • 高防CDN
  • 高防IP转发
  • SDK游戏盾
  • 高防服务器

解决方案

  • 游戏解决方案
  • 金融解决方案
  • 直播解决方案
  • 区块链解决方案

资源

  • 技术文档
  • 帮助中心
  • 博客资讯
  • 全球测速

公司

  • 关于我们
  • 加入我们
  • 合作伙伴
  • 联系我们

© 2026 Sudun. 保留所有权利。

缓存规则定义了Sudun如何从边缘服务器缓存和提供内容。正确配置的缓存规则可以提升性能、减轻源站负载并改善用户体验。

缓存工作原理

code
请求 → 边缘服务器 → 缓存检查
                            │
                    ┌───────┴───────┐
                    │               │
               缓存命中        缓存未命中
                    │               │
              返回缓存内容     从源站获取
                              缓存响应
                              返回给用户

默认缓存行为

默认情况下,Sudun根据以下内容类型进行缓存:

内容类型默认TTL是否可缓存
图片 (jpg, png, gif, webp)1天是
CSS、JavaScript1天是
字体 (woff, woff2, ttf)1天是
HTML不缓存否
API响应不缓存否

创建缓存规则

  1. 进入域名 → 选择您的域名
  2. 导航至缓存 → 缓存规则
  3. 点击创建规则

规则构成要素

要素描述示例
匹配条件匹配请求的条件URL路径、文件扩展名
缓存操作如何处理匹配的请求缓存、绕过、覆盖
TTL缓存存活时间3600 (1小时)

匹配条件

URL路径匹配

code
# 精确匹配
/images/logo.png

# 前缀匹配
/static/*

# 通配符匹配
/api/*/public

# 正则匹配 (高级)
^/blog/[0-9]{4}/.*$

文件扩展名匹配

按文件类型缓存:

json
{
  "match": {
    "file_extension": ["jpg", "jpeg", "png", "gif", "webp", "css", "js"]
  },
  "action": "cache",
  "ttl": 86400
}

查询字符串匹配

json
{
  "match": {
    "path": "/search",
    "query_string": {
      "contains": "category"
    }
  }
}

请求头匹配

json
{
  "match": {
    "headers": {
      "Accept": "application/json"
    }
  },
  "action": "bypass"
}

缓存操作

缓存

在边缘服务器存储内容:

json
{
  "match": { "path": "/static/*" },
  "action": "cache",
  "ttl": 604800,
  "settings": {
    "browser_ttl": 86400,
    "serve_stale": true
  }
}

绕过缓存

始终从源站获取:

json
{
  "match": { "path": "/api/*" },
  "action": "bypass"
}

覆盖源站头部

忽略源站缓存头部:

json
{
  "match": { "path": "/assets/*" },
  "action": "override",
  "ttl": 2592000,
  "ignore_origin_headers": true
}

TTL配置

边缘TTL

内容在边缘服务器缓存的时间:

值时长使用场景
601分钟频繁更新的内容
36001小时半动态内容
864001天静态资源
6048001周极少变动的内容
259200030天版本化资源

浏览器TTL

浏览器本地缓存内容的时间:

json
{
  "edge_ttl": 86400,
  "browser_ttl": 3600
}

提示:将浏览器TTL设置得比边缘TTL短,以便保持对缓存失效的控制。

缓存键配置

缓存键决定了什么因素使缓存对象具有唯一性。

默认缓存键

code
https://example.com/page?sort=date&page=1
         │            │        │
      协议方案      路径     查询字符串

查询字符串处理

选项行为
包含全部缓存随所有查询参数变化
排除全部忽略查询字符串进行缓存
包含特定仅指定参数影响缓存
排除特定忽略指定参数

示例:包含特定参数

json
{
  "cache_key": {
    "query_string": {
      "include": ["category", "page"]
    }
  }
}

基于请求头的缓存键

根据请求头变化缓存:

json
{
  "cache_key": {
    "headers": ["Accept-Language", "Accept-Encoding"]
  }
}

基于Cookie的缓存键

根据Cookie变化缓存 (谨慎使用):

json
{
  "cache_key": {
    "cookies": ["session_type", "user_tier"]
  }
}

陈旧内容处理

重新验证期间提供陈旧内容

在获取新内容的同时提供缓存内容:

json
{
  "serve_stale": {
    "while_revalidate": true,
    "on_error": true,
    "max_stale_age": 86400
  }
}

出错时提供陈旧内容

当源站失败时提供陈旧内容:

code
源站错误 (5xx) → 提供陈旧内容 → 记录错误

缓存控制头部

遵循源站头部

默认情况下,Sudun 遵循以下源站头部:

头部行为
Cache-Control: max-age=X缓存 X 秒
Cache-Control: no-cache提供前重新验证
Cache-Control: no-store不缓存
Cache-Control: private不在边缘缓存
Expires缓存至指定日期
ETag启用条件请求

覆盖源站头部

强制缓存,忽略源站头部:

json
{
  "match": { "path": "/static/*" },
  "action": "cache",
  "ttl": 86400,
  "respect_origin_headers": false
}

规则优先级

规则按顺序评估。第一个匹配的规则生效:

code
规则 1: /api/* → 绕过 (优先级: 1)
规则 2: /api/public/* → 缓存 (优先级: 2)
规则 3: /* → 缓存 (优先级: 3)

请求: /api/users → 匹配规则 1 → 绕过
请求: /api/public/data → 匹配规则 1 → 绕过 (而非规则 2!)

重要:将更具体的规则放在通用规则之前。

常见缓存规则模式

静态资源

json
{
  "name": "静态资源",
  "match": {
    "file_extension": ["css", "js", "jpg", "png", "gif", "ico", "woff2"]
  },
  "action": "cache",
  "ttl": 2592000,
  "browser_ttl": 86400
}

API 响应

json
{
  "name": "API 绕过",
  "match": { "path": "/api/*" },
  "action": "bypass"
}

短 TTL 的 HTML 页面

json
{
  "name": "HTML 页面",
  "match": {
    "file_extension": ["html"],
    "path": "/*"
  },
  "action": "cache",
  "ttl": 300,
  "serve_stale": true
}

版本化资源(长 TTL)

json
{
  "name": "版本化资源",
  "match": {
    "path": "/assets/v*/*"
  },
  "action": "cache",
  "ttl": 31536000,
  "immutable": true
}

调试缓存规则

缓存状态头部

检查 X-Cache-Status 响应头部:

状态含义
HIT从缓存提供
MISS从源站获取
BYPASS缓存被绕过
EXPIRED缓存过期,正在重新验证
STALE提供陈旧内容

测试缓存规则

bash
# 检查缓存状态
curl -I https://example.com/static/style.css

# 响应头部
X-Cache-Status: HIT
Cache-Control: max-age=86400
Age: 3600

API 参考

通过 API 管理缓存规则:

bash
# 列出缓存规则
curl -X GET https://api.Sudun.com/v1/domains/example.com/cache-rules \
  -H "Authorization: Bearer YOUR_API_KEY"

# 创建缓存规则
curl -X POST https://api.yeSudunom/v1/domains/example.com/cache-rules \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Static Assets",
    "match": {"file_extension": ["css", "js", "png"]},
    "action": "cache",
    "ttl": 86400
  }'

需要缓存规则方面的帮助?请联系 support@Sudun.com