问题是这样的:我用poi做一个excel导出,当数据量小的时候就能跳转页面,超过一定数据量是在action里面的处理时间久比较长,当action处理完毕后不能跳转页面,页面还是在等待状态。我主要是想知道为什么会出现这种问题,该如何解决。当然sql和代码优化先不管,以后再处理。 

解决方案 »

  1.   

    你跳转页面和下载excel 有什么关系? 下载完后再跳转?什么思维~  
    下载处理时间长,和页面跳转没必然关系。最多你开线程异步处理下载功能
      

  2.   

    我是在action里面生成excel放在服务器上,然后返回页面显示一个下载的链接,这样也不行么?
      

  3.   

    这么没什么好办法吧,你导出比较慢,是因为你的数据量太大了。
    你定下位,看看主要时间消耗在哪里,是在sql查询中,还是在poi填充数据的时候。
    你如果导出的数据过大,内存都会溢出的。
    或者你可以考虑分成几个excel文件,然后返回链接,通过链接再进行下载~
      

  4.   

    嗯,,用户ajax.  成功返回前,弹个窗口,,,“正在处理中.....”
      

  5.   

    可以试试wireshark抓包分析一下就比较清楚了,前提是你要有点网络基础!
      

  6.   

    再说现在我不管功能是否合理,只是想知道怎么解决这种问题。好吧,那你可以开异步线程,点击生成Excel时候,直接返回页面,后台继续生成。监控生成进度,显示前台。
    满100% 直接刷新页面。或者你只显示任务生成ing... 然后等待返回。Ajax或者什么自己考虑。
     将生成的文件,放在本地服务器临时文件夹内,给出下载路径,显示页面上。实现点击下载。
    这样就避免了页面会挂掉,无反映的情况。
    思路就是,先把页面显示出来。再处理。了解了么
      

  7.   

    你是说直接用response吗?如果数据量大的话也不行,页面照样卡住。