我有一个使用AJAX获取网页搜索结果的网页。在服务器端,我正在查询非常慢的Web服务 - 20秒到2分钟。
据我所知,我的选择是轮询或长时间运行请求。
AsyncCallback似乎是理想的,因为一旦Web服务响应就会返回结果,并且线程不会在服务器端被阻止。
有没有更好的方法来做到这一点?您是否知道jQuery中长时间运行HTTP请求的任何问题?
更新:是的,我会在可能的情况下缓存来自Web服务的响应。我对我正在查询的外部Web服务没有任何控制权。
答案 0 :(得分:2)
我们正在使用AsyncCallbacks进行服务器轮询,在4:30 - 5分钟内做出明智的响应,系统运行正常。
值得一提的是,除了IIS的工作线程池在请求过多时不会耗尽的事实,你将得不到任何好处(性能,响应时间等):即。如果我们每分钟得到2个请求,我们通常会有10到12个未决请求。在这种情况下,AsyncCallback将无任何区别。如果我们每分钟获得100个请求,这意味着500到600个挂起连接,因此异步是必须的。它只是关于管理线程池。
答案 1 :(得分:1)
这种用户浏览到另一个页面的方法只有一个问题,你可以做的就是将结果缓存到某个地方,这样你就不会一直查询web服务。