如何用 HTMLRewriter 替换 jsp 标签
How to replace jsp tag with HTMLRewriter
我对 Cloudflare 的 HTMLRewriter 功能有点陌生。
我正在尝试使用 HTMLRewriter 将 jsp 标签替换为一些 html。
更准确地说,<%= "${header}" %>
。有什么办法可以做到这一点吗?
我设法替换了 header 标签 <header>
,但没有替换 jsp 或其他字符串。
不幸的是,此 JSP 标签无效 HTML,因此 HTMLRewriter
不会将其识别为任何类型的 HTML 元素。您的选择可能是:
- 将整个 HTML 读入字符串并进行字符串替换。这将使用大量内存并会损害您的 TTFB,因为在工作人员收到整个文件并完成替换之前,客户端无法接收任何字节。
- 使用流API一次读取一个块并执行替换。替换完成后,您可以使用
pipeTo()
有效地流式传输文件的其余部分。这种方法的问题是要获得正确的匹配逻辑可能会非常复杂。您要查找的字符串最终可能会拆分为流的多个块,因此处理该问题所需的状态机很棘手。
- 更改您的来源以发送有效的 HTML,例如
<header></header>
而不是 <%= "${header}" %>
。根据您的问题,我猜这是不可能的,或者您已经完成了。但是,如果您能找到某种方法,这确实是最干净的选择。
我对 Cloudflare 的 HTMLRewriter 功能有点陌生。
我正在尝试使用 HTMLRewriter 将 jsp 标签替换为一些 html。
更准确地说,<%= "${header}" %>
。有什么办法可以做到这一点吗?
我设法替换了 header 标签 <header>
,但没有替换 jsp 或其他字符串。
不幸的是,此 JSP 标签无效 HTML,因此 HTMLRewriter
不会将其识别为任何类型的 HTML 元素。您的选择可能是:
- 将整个 HTML 读入字符串并进行字符串替换。这将使用大量内存并会损害您的 TTFB,因为在工作人员收到整个文件并完成替换之前,客户端无法接收任何字节。
- 使用流API一次读取一个块并执行替换。替换完成后,您可以使用
pipeTo()
有效地流式传输文件的其余部分。这种方法的问题是要获得正确的匹配逻辑可能会非常复杂。您要查找的字符串最终可能会拆分为流的多个块,因此处理该问题所需的状态机很棘手。 - 更改您的来源以发送有效的 HTML,例如
<header></header>
而不是<%= "${header}" %>
。根据您的问题,我猜这是不可能的,或者您已经完成了。但是,如果您能找到某种方法,这确实是最干净的选择。