使用Struts框架,上载大附件,速度奇慢,为什么?
使用Struts+Hibernate+Spring框架搭建系统,该系统的主要功能就是上载附件保存到数据库中,经过反复测试,发现瓶颈在Struts这边。
上载100M的数据,从页面点击“Upload”按钮,到进入Action,大概需要18分钟,但是从Action开始处理数据,到最后保存到数据库中大概只用了3分钟。
分析原因,是页面中 <form method= "POST " enctype= "multipart/form-data " ....> ,点击“Upload”后,Struts首先做的事情是将页面上的元素与Form对应起来,使用映射将Form中的变量赋予实际的值。在这个过程中,我推测Struts将大附件整体遍历一遍,从应用服务器到客户端建立一个流,解析附件的相关信息,这个过程花费了大把时间,所以从页面点击“Upload”后,到进入Action开始处理数据之前要花费18分钟的时间。
我分析的可能不对,请帮忙分析一下,有没有提高效率的方法?
分数不够,可以再加,呵呵,务必好人好到底,把问题给解决掉!
------解决方案--------------------我想应该是文件从client通过http上传到服务器花的时间太多吧?
你可以尝试把文件弄小一点
struts也不会慢的
------解决方案--------------------提高效率大概要研究上传组件了
把struts的上传组件优化再优化
比如做的象讯雷下载那么快
------解决方案--------------------我和楼上的想法有点不同,文件通过http传到服务器应该是在action里面进行处理的,所有我倾向楼主的观点,假如现象是正确的话,那么就是在View端和File文本框匹配生成像应的附件发费的时间比较多把
------解决方案--------------------多线程上传要不要试试,
http://www.mob8.cn/baby/javaupload.rar
这是我在http://community.csdn.net/Expert/topic/5401/5401563.xml?temp=.3675501这个贴上帮人家解决的一个问题,只需要传一个文件路径和文件名过来就可以多线程上传了,不需要enctype= "multipart/form-data "的,我想你的问题可能就出在这个enctype= "multipart/form-data "上
------解决方案--------------------100M的东西应该是有点慢的吧,你看用油箱传附件如果上了10M都要好长时间!
讯雷那么快应该是采用了多线程同时下载...
------解决方案--------------------為什么不考慮下硬件呢。學習中