如何使 Response print 的 js 代码不需要全部载入就能运行

2018-12-02 22:07:49 +08:00
 tusik

现在是使用一个 form 的 target 指向一个 iframe,当表单提交的时候 iframe 会请求 controller 并拿到生成的 js

for (String host :remoteHost){
       writer.print("<script>");
       writer.print("parent.add("+object+");
       writer.print("</script>\r\n");
       writer.flush();
}

这是目前自己写的东西在用的代码,在本地测试的时候是能实现 print 一条 js 就能马上执行

然而放到服务器上之后却还是需要所有的 js 代码 print 完才能一次性全部执行。

有木有更好的解决办法

1800 次点击
所在节点    Java
4 条回复
xiangyuecn
2018-12-02 22:20:19 +08:00
也许哪里把数据给拦截了,导致 flush 并没有实际发送给客户端,比如 ngnix 层的 gzip 就会等我们的程序所有数据发送完成后才会发送给客户端
tusik
2018-12-02 22:30:03 +08:00
@xiangyuecn 非常感谢,找到问题就在 nginx,直接用端口访问的话就不会出现这个问题,但是就算 gzip 是 off 也还是不能成功 flush
zjp
2018-12-02 23:40:18 +08:00
应该是反向代理的 cache 或者 buffer 的原因,nginx 有个 proxy_buffers 参数
tusik
2018-12-03 09:19:41 +08:00
@zjp 问题解决了,专门在 api 的 niginx 里写一条 proxy_buffering off 就可以了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/513628

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX