今天我想展示一下如何在整个网关网络中实时清除 OpenResty Edge 的 HTTP 缓存。

嵌入图片

为应用创建新的缓存清除任务

像之前一样,让我们进入 OpenResty Edge 的 Admin Web 控制台。这是我们控制台的样本部署。每个用户都有自己的本地部署。

截图

这次我们使用一个真实的应用,我们的 openresty.org 网站。

截图

进入这个应用。

截图

进入本应用的缓存清除页面。

截图

可以看到,我们已经有很多之前的清除任务。

截图

让我们创建一个新的清除任务。

截图

我们可以选择的清除缓存的方式有三种,全路径 URL 、

截图

URL 前缀、

截图

或复杂的自定义条件。

截图

先来尝试一下完整的 URL 模式。

截图

这是 openresty.org 网站的 FAQ 页面。请注意,在这里使用 http://https:// 并不重要。 这是因为我们在缓存键中没有包含 scheme 字符串。默认情况下,scheme 字符串是不包含的。

在提交清除缓存任务之前,我们先确保这个网页的缓存是命中的,这样就可以测试清除的效果。

嵌入图片

在终端上,我们可以向 FAQ 网页发送测试请求,以确保它已经是一个缓存命中。

curl -I https://openresty.org/en/faq.html

然后再做一次。

请注意返回的 Cache-Status: HIT 响应头。

截图 2

然后提交我们的缓存清除任务。

截图

太好了!缓存已经在整个网络中被清除了。

截图

与其他的应用级别配置不同,缓存清除任务会立即在网关网络中同步。它不需要进行新的应用配置发布。

缓存清除不需要重新加载服务器、重新启动或二进制升级。

嵌入图片

验证缓存状态

我们再来验证一下终端上的缓存状态。

curl -I https://openresty.org/en/faq.html

请注意返回的 Cache-Status: EXPIRED 响应头。现在确实是缓存未命中。

截图 1

第二个请求应该是再次缓存命中。

请注意 Cache-Status: HIT 响应头。

截图 3

通过 URL 前缀清除缓存

这次我们来试试通过 URL 前缀来清除。

截图

我们想清除 /en/ 位置下的所有东西。

截图

现在提交新的任务。

截图

现在已经同步到整个网关网络了。

截图

发送测试请求到我们的 FAQ 页面。

curl -I https://openresty.org/en/faq.html

确实是如预期的那样,缓存未命中。

截图 1

测试 URI 前缀 /en/ 下的另一个页面,活动页面。

curl -I https://openresty.org/en/events.html

这也是预期的缓存未命中。

截图 3

/en/ 页面本身

curl -I https://openresty.org/en/

也是缓存未命中。

截图 5

我们也可以清除其他类型资源的缓存,比如所有的 CSS 文件,所有的图片,只要这些文件被归入预定义的 URL 位置。

截图

我们还不需要现在提交这个新的清除任务。

截图

自定义清除缓存的条件

我们可能需要定义更复杂的条件。

截图

例如,我们可以清除所有 URI 后缀为 .css 资源的缓存,不管它们的 URI 位置是什么。

选择后缀匹配运算符。

截图

截图

然后输入后缀字符串值。

截图

我们可以在当前的清除任务中增加更多的条件,这些条件之间是的关系,它们需要同时满足。

截图

例如我们可以添加条件检查 URI 参数、请求头、 cookies 等。

截图

我们也可以使用通配符或正则表达式模式来代替字面字符串模式,

截图

或者增加更多的值的模式,这些值之间是或者的关系,满足其中之一即可。

截图

截图

这些条件都可以随意尝试。 正如我们所看到的,它是非常灵活的,就像我们的页面规则里的条件一样。

这就是我今天要介绍的内容。

关于 OpenResty Edge

OpenResty Edge 是一款专为微服务和分布式流量架构设计的全能型网关软件,由我们自主研发。它集流量管理、私有 CDN 构建、API 网关、安全防护等功能于一体,帮助您轻松构建、管理和保护现代应用程序。OpenResty Edge 拥有业界领先的性能和可扩展性,能够满足高并发、高负载场景下的苛刻需求。它支持调度 K8s 等容器应用流量,并可管理海量域名,轻松满足大型网站和复杂应用的需求。

如果你喜欢这个教程,请订阅这个博客网站和我们的 YouTube 频道B 站频道。谢谢!

关于作者

章亦春是开源 OpenResty® 项目创始人兼 OpenResty Inc. 公司 CEO 和创始人。

章亦春(Github ID: agentzh),生于中国江苏,现定居美国湾区。他是中国早期开源技术和文化的倡导者和领军人物,曾供职于多家国际知名的高科技企业,如 Cloudflare、雅虎、阿里巴巴, 是 “边缘计算“、”动态追踪 “和 “机器编程 “的先驱,拥有超过 22 年的编程及 16 年的开源经验。作为拥有超过 4000 万全球域名用户的开源项目的领导者。他基于其 OpenResty® 开源项目打造的高科技企业 OpenResty Inc. 位于美国硅谷中心。其主打的两个产品 OpenResty XRay(利用动态追踪技术的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最适合微服务和分布式流量的全能型网关软件),广受全球众多上市及大型企业青睐。在 OpenResty 以外,章亦春为多个开源项目贡献了累计超过百万行代码,其中包括,Linux 内核、Nginx、LuaJITGDBSystemTapLLVM、Perl 等,并编写过 60 多个开源软件库。

关注我们

如果您喜欢本文,欢迎关注我们 OpenResty Inc. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:

我们的微信公众号

翻译

我们提供了英文版原文和中译版(本文) 。我们也欢迎读者提供其他语言的翻译版本,只要是全文翻译不带省略,我们都将会考虑采用,非常感谢!