.. | ||
default.clj | ||
readme.md |
Cloudflare 的缓存规则
Warning
套用规则前请替换对应的域名,并将缓存资格设为 绕过缓存 规则中不允许加注释,记得删掉
使用方法:前往 Cloudflare Dashboard > 域名 > 缓存 > Cache Rules > 创建规则 > 编辑表达式
在添加下面的配置前你需要创建另一个缓存规则,在这个规则中将 传入请求匹配
设为 所有传入请求
,缓存资格
设为 符合缓存条件
,边缘 TTL
和 浏览器 TTL
随意来都可以,看你站点内容的更新频率,我的不是什么需要实时更新的站点,我分别设定成了一天和 12 小时,最后将放置位置设为 第一个
,保存返回
接下来再创建一个规则,传入请求匹配
选择 自定义筛选表达式
,再点击右下角的 编辑表达式
,根据你的需要将配置填入。之后缓存资格设为 绕过缓存
,如果你之前有配置,放置位置可能会是自定义,只要保持在前一个规则后面就行,你可以退出到上一个页面查看具体排序,保存即可
default.clj ⬅️ 点击链接查看完整规则
此规则的缓存资格设为 绕过缓存
( http.host eq "lume.trle5.xyz" and ( http.request.uri.path contains "/search/" ) ) or # 绕过 lume theme shiraha 的搜索
( http.host eq "memos.trle5.xyz" and ( http.request.uri.path contains "/api/" ) ) or # 绕过 memos 的 api (旧版)
( http.host eq "alist.trle5.xyz" and ( http.request.uri.path contains "/api/" ) ) or # 绕过 alist 的 api
( http.host eq "nxiv.trle5.xyz" and ( http.request.uri.path contains "/api/" ) ) or # 绕过 immich 的 api
( http.host eq "pic.trle5.xyz" and not ( # 另一个 memos 站点,用来存图片,不绕过资源文件
http.request.uri.path contains "/o/r/" or
http.request.uri.path contains "/assets/"
)
) or
( http.host eq "gitea.trle5.xyz" and not ( # 不绕过以下全部内容
# 头像和资源文件
http.request.uri.path contains "/assets/" or # 这个可能会导致访问以下目录时,自己的登录样式被缓存下来,如果不希望可以去掉这行
http.request.uri.path contains "/avatars/" or
http.request.uri.path contains "/repo-avatars/" or
# 组织中公开的仓库
( starts_with( http.request.uri.path, "/mirrors" ) and (
http.request.uri.path contains "/abeezee/" or
http.request.uri.path contains "/urara/" or
http.request.uri.path contains "/urara-docs/" or
http.request.uri.path contains "/canokey-nrf52/"
# 不在列表中的即为 DYNAMIC 动态
)
) or
# 个人账户公开的仓库
( starts_with( http.request.uri.path, "/trle5/" ) and (
http.request.uri.path contains "/cf_rule/" or
http.request.uri.path contains "/.profile/" or
http.request.uri.path contains "/templates/" or
http.request.uri.path contains "/flutter_clock_example/" or
http.request.uri.path contains "/l4d2_tools/" or
http.request.uri.path contains "/hexo_s/" or
http.request.uri.path contains "/lyric/" or
http.request.uri.path contains "/bot/" or
http.request.uri.path contains "/pixelbookgo_hackintosh/"
# 不在列表中的即为 DYNAMIC 动态
)
)
)
)
关于仓库设定的命令,这里的匹配方式有点问题,如果像这样在仓库名前后都加斜杠,但是 gitea 给的仓库路径默认是不带后斜杠的,这样会导致没有尾斜杠的请求回源(即缓存没有生效)。若单独留一个前斜杠或后斜杠,可能会导致错误的匹配,例如 /bot
规则,名为 /bot_utils
的仓库在访问时也会因为包含 /bot
而被错误的匹配而进入到缓存中,目前没有什么好的解决方法
如果你担心你访问以上设定不绕过的目录时被记录下登录状态(例如 gitea 右上角显示着自己的登录头像),你还可以设定一个 UA 规则。这个就比较简单,传入请求匹配
设为 自定义筛选表达式
,再将 字段
设为 用户代理
, 运算符
选择 等于
,值
就填入自己的浏览器 UA,最后 缓存资格
选择 绕过缓存
保存即可,顺序放到前面两个规则之后即可
不过这个方法可能会因为浏览器自动更新而失效,因为 UA 会有变动,你需要在每次更新浏览器后重新设定一次,而且这样的话你访问网站时无论规则如何,你自己的请求都是会回源的,加载速度没有 CDN 加成