filter 缓存所有body

各位大神好:

最近在做一个字符串替换模块,想要在所有要发出的html文件中,对所有的外链进行修改,在链接的最后加一个标识。因此想要将所有收到的html文件先全部缓存了之后再进行处理,以避免边界问题。但是对于缓存方式有些疑惑:

  1. 仅仅缓存收到的 in 数据中的 poslast 指针,然后将 in 中的 pos 指向 last 传给下一个filter模块,让下一个filter模块不再进行处理;(该方案实践后成功,但是与sub filter模块一起使用时有些问题,不明白问题缘由)
  2. 仅缓存 in ,然后在自己的filter模块中直接 return NGX_OK;(该方案似乎不行,不交给接下来的模块进行处理直接返回NGX_OK会有些问题)
  3. 将所有收到的数据直接进行内存拷贝以缓存,该方案还未实施,考虑到性能比较差;

不知道各位大神有没有比较好的方案,若觉得 方案1,2 行不通的请告知缘由,万分感谢!

邀请回答
提问于 2020-08-12 11:37
331 次浏览
共1个回答

发表评论
  • 陶辉
    2020-08-13 18:06

    性能最高的方案是在内存中用状态机来处理,比较复杂;最简单的方案是将响应缓存到文件中,再读取文件处理。

    1
    回复
    举报
提问者

小禾先生

nginx初学者

  • 0

    文章

  • 0

    粉丝

  • 0

    被赞

小禾先生
按Enter键发送
您已邀请位用户
Copyright 公安部网络安全保卫局 All Rights Reserved
京公网安备 11010502047880号    京ICP备05070602号