regex - 用 Varnish +正则表达式替换页面中的内容

标签 regex caching webserver varnish varnish-vcl

如果我希望我的 Varnish 缓存服务器在提供或存储页面(vcl_fetch?)之前从后端替换页面内的内容(即:更改 div 上的类),如何做到这一点?

我想使用简单的正则表达式来执行替换,因为我想它在 Varnish 中 native 支持。

最佳答案

Varnish 本身不支持修改响应正文。为此,您需要一个 Varnish 模块 (vmod)。

Aivars Kalvans 有 libvmod-rewrite ,这正是您正在寻找的。然而,vmod 是一个概念证明,根据 Aivars 的说法,它还没有准备好用于生产。在任何情况下,您都可以将其用作起点。

如果您使用的是 Apache,您可以使用 mod_ext_filter修改响应正文。这是 mod_ext_filters 文档中的一个示例。由于您可以将响应正文传递给任何外部命令,因此很容易对内容进行必要的修改。

# mod_ext_filter directive to define a filter which
# replaces text in the response
#
ExtFilterDefine fixtext mode=output intype=text/html cmd="/bin/sed s/verdana/arial/g"

<Location />
# core directive to cause the fixtext filter to
# be run on output
SetOutputFilter fixtext
</Location> 

关于regex - 用 Varnish +正则表达式替换页面中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15815926/

相关文章:

c# - CQRS 应用程序中的缓存失效

c# - c# 的磁盘支持字典/缓存

javascript - 在 Firefox 或 Edge 中从缓存预加载图像时出现问题

java - 通过匹配字符串中的日期格式使用 Java 提取日期

c# - 如何在 C# 中搜索多个位置的直接子字符串

php - 错误 - 目录索引被选项指令禁止?

python - 简单的网络服务器和 Apache 服务器有什么区别?

jsp - 如何使用 Tomcat Web 服务器在 Internet 上发布 JSP 项目?

正则表达式匹配马虎分数/混合数字

java - 使用replaceAll作为下标