回答
收藏
分享
举报
filter 缓存所有body
提问于2020-08-12 11:37

浏览 3.6k

各位大神好:

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

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

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

已修改于2023-02-22 02:12



写下您的回答
发表回答
全部回答(1)

按点赞数排序

按时间排序

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

赞同

1

回复举报

回答于2020-08-13 18:06



回复陶辉
回复
提问者
小禾先生
这家伙很懒还未留下介绍~
0
文章
4
问答
0
粉丝
相关问答

默认情况下,nginx.conf里没有server配置,用的是include指令引入了conf.d里的配置文件。最好是把server配置都放在conf.d里,当然在nginx.conf里写sever配置也允许,但这样就不太好管理了。默认应该是这样的:

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}


点赞 0
浏览 4.8k

nginx版本试过1.16.1和1.20.1

点赞 0
浏览 3.6k

location ^~ /forum {
set $args mod=viewthread&${args};
rewrite ^(.*)$ /$uri last;
}

点赞 0
浏览 3.3k