在java web项目中,访问一个页面时,内部会有多个http请求接口数据。当这些请求数据不存在顺序依赖时,如何有效的并行执行这些请求,从加快页面访问。

oulaly 发布于 2017/05/08 11:24
阅读 1K+
收藏 0

用ExecutorService的invokeAll方法提高性能大不大,而且要给每个请求实例化Callable对象,传参也有点麻烦。

加载中
0
_Mr_Right_
_Mr_Right_

可以从这些方面入手:(具体方案还得看你项目的实际情况。)

1>减少HTTP请求次数,

比如:合并一些http请求,原有需要访问两次,是否可以提供一个一次查询的接口,

          是否每次打开页面都需要去http访问呢,可否加入缓存。

2>并发执行,(每个http启动一个线程执行,方式很多种)

3> 先打开页面,提示一些友好的信息,然后后台继续执行。(ajax,websocket等方式吧值传递到前台去)

 

oulaly
oulaly
谢谢建议,其实更想了解并发执行这块的实现选择
0
尚浩宇
尚浩宇

我来给你点建议,如果你的目的是加快页面响应。

1、跳转后台方法尽量简单,不做数据库访问,如:

2、除跳转页面外,其它数据请求全部用ajax,并且合并重复的数据请求

3、后台优化。这个相对复杂,因为优化涵盖方面太多。

4、数据请求后台使用servlet3.0异步http请求,如:

5、缓存银弹。

尚浩宇
尚浩宇
@oulaly 回复@oulaly : 好的
oulaly
oulaly
谢谢建议,我的问题主要对应你提的第3点。servlet3.0异步我再了解下,之前没有用过。
0
努力在努力再努力
努力在努力再努力

你好,我想知道 你找到解决方法了吗,我也遇到了跟你一样的业务问题。

oulaly
oulaly
还有这个:Guava ListenableFuture
oulaly
oulaly
你可以试试 ExecutorService 和 Future,不过我觉得这个写起来太麻烦,想找个简洁的实现方案,但是找不到。
返回顶部
顶部