提问者:小点点

如何用HTMLRewriter替换jsp标记


我对CloudFlare的HTMLRewriter函数有点陌生。

我正在尝试使用HTMLRewriter将一个jsp标记替换为一些html。

更确切地说,<%=“${header}”%>。有什么办法能让我这么做吗?

我设法替换了标题标记

,但没有替换jsp或其他字符串。


共1个答案

匿名用户

不幸的是,该JSP标记不是有效的HTML,因此HTMLRewriter不会将其识别为任何类型的HTML元素。你的选择可能是:

  1. 将整个HTML读入一个字符串并执行字符串替换。这将使用大量内存,并且会损害您的TTFB,因为在工作人员接收到整个文件并完成替换之前,客户端无法接收任何字节。
  2. 使用streams API一次读取一个块并执行替换。替换完成后,您可以使用pipeto()高效地处理文件的其余部分。这种方法的问题是,获得正确的匹配逻辑可能非常复杂。您要查找的字符串最终可能会被分割到流的多个块中,因此处理该字符串所需的状态机非常复杂。
  3. 更改源以发送有效的HTML,如
    ,而不是<%=“${header}”%>。根据你的问题,我猜这是不可能的,否则你早就这么做了。但是,如果你能找到一些方法的话,这确实是最干净的选择。