在 OpenResty Edge 中实时清除 HTTP 缓存
今天我想展示一下如何在整个网关网络中实时清除 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
响应头。
然后提交我们的缓存清除任务。
太好了!缓存已经在整个网络中被清除了。
与其他的应用级别配置不同,缓存清除任务会立即在网关网络中同步。它不需要进行新的应用配置发布。
缓存清除不需要重新加载服务器、重新启动或二进制升级。
我们再来验证一下终端上的缓存状态。
curl -I https://openresty.org/en/faq.html
请注意返回的 Cache-Status: EXPIRED
响应头。现在确实是缓存未命中。
第二个请求应该是再次缓存命中。
请注意 Cache-Status: HIT
响应头。
这次我们来试试通过 URL 前缀来清除。
我们想清除 /en/
位置下的所有东西。
现在提交新的任务。
现在已经同步到整个网关网络了。
发送测试请求到我们的 FAQ 页面。
curl -I https://openresty.org/en/faq.html
确实是如预期的那样,缓存未命中。
测试 URI 前缀 /en/
下的另一个页面,活动页面。
curl -I https://openresty.org/en/events.html
这也是预期的缓存未命中。
或 /en/
页面本身
curl -I https://openresty.org/en/
也是缓存未命中。
我们也可以清除其他类型资源的缓存,比如所有的 CSS 文件,所有的图片,只要这些文件被归入预定义的 URL 位置。
我们还不需要现在提交这个新的清除任务。
我们可能需要定义更复杂的条件。
例如,我们可以清除所有 URI 后缀为 .css
资源的缓存,不管它们的 URI 位置是什么。
选择后缀匹配运算符。
然后输入后缀字符串值。
我们可以在当前的清除任务中增加更多的条件,这些条件之间是且的关系,它们需要同时满足。
例如我们可以添加条件检查 URI 参数、请求头、 cookies 等。
我们也可以使用通配符或正则表达式模式来代替字面字符串模式,
或者增加更多的值的模式,这些值之间是或者的关系,满足其中之一即可。
这些条件都可以随意尝试。 正如我们所看到的,它是非常灵活的,就像我们的页面规则里的条件一样。
这就是我今天要介绍的内容。
如果你喜欢这个教程,请订阅这个博客网站和我们的 YouTube 频道 或 B 站频道。谢谢!
关于本文和关联视频
本文和相关联的视频都是完全由我们的 OpenResty Showman 产品从一个简单的剧本文件自动生成的。
关于作者
章亦春是开源 OpenResty® 项目创始人兼 OpenResty Inc. 公司 CEO 和创始人。
章亦春(Github ID: agentzh),生于中国江苏,现定居美国湾区。他是中国早期开源技术和文化的倡导者和领军人物,曾供职于多家国际知名的高科技企业,如 Cloudflare、雅虎、阿里巴巴, 是 “边缘计算“、”动态追踪 “和 “机器编程 “的先驱,拥有超过 22 年的编程及 16 年的开源经验。作为拥有超过 4000 万全球域名用户的开源项目的领导者。他基于其 OpenResty® 开源项目打造的高科技企业 OpenResty Inc. 位于美国硅谷中心。其主打的两个产品 OpenResty XRay(利用动态追踪技术的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最适合微服务和分布式流量的全能型网关软件),广受全球众多上市及大型企业青睐。在 OpenResty 以外,章亦春为多个开源项目贡献了累计超过百万行代码,其中包括,Linux 内核、Nginx、LuaJIT、GDB、SystemTap、LLVM、Perl 等,并编写过 60 多个开源软件库。
关注我们
如果您喜欢本文,欢迎关注我们 OpenResty Inc. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:
翻译
我们提供了英文版原文和中译版(本文) 。我们也欢迎读者提供其他语言的翻译版本,只要是全文翻译不带省略,我们都将会考虑采用,非常感谢!