首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将大字节数组写入输出流可能产生的效果?

将大字节数组写入输出流可能产生的效果?
EN

Stack Overflow用户
提问于 2010-09-20 20:52:15
回答 2查看 960关注 0票数 1
代码语言:javascript
复制
private static void writeData( byte[] file, HttpServletResponse response )
    throws IOException
{
    ....
    // Send the data
    response.setContentLength(file.length);
    response.getOutputStream().write(file);
}

最近,我在IE8中发现一些连接在请求下载文件时关闭。这是代码中的相关源代码,我想知道一次向响应输出流写入大字节数组是否会导致这个问题。这个问题是非常不可复制的,我经常看到的模式是一次写一定数量的字节,而不是同时写,以避免MTU问题,或者类似的事情。

这些代码会对我间歇性的IE问题负责吗?如果是,为什么,为什么只在IE?

编辑:

我尝试使用Cache-Control: no-cache,结果在IE中是灾难性的。

请求:

代码语言:javascript
复制
POST /myapplication/someAction.do?step=none&SAct=none HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, */*
Referer: https://myhost.myhost.com/myapplication/someAction.do?queryString=something
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8; .NET4.0C; InfoPath.3)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: myhost.myhost.com
Content-Length: 1644
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=GnvHMYyGx9QrmpVQfBSgNXnPM8nQJ21dT82KhmSSTXRRT1mgB8tP!299858932; [truncated]

响应:

代码语言:javascript
复制
HTTP/1.1 200 OK
Cache-Control: no-cache
Date: Tue, 21 Sep 2010 18:00:56 GMT
Transfer-Encoding: chunked
Content-Type: application/ZIP
Content-Disposition: inline; filename=ActivityReport.ZIP
X-Powered-By: Servlet/2.5 JSP/2.1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-20 22:27:00

您是否设置响应的缓存信息?(日期、缓存控制等)

我在IE中看到了很多这种行为,并且总是与IE的缓存实现有关,它不是发送HEAD请求来检查内容的有效性,而是发送完整的GET请求,然后使用headers来确定其缓存内容的有效性,如果它确定缓存的版本是有效的,那么就关闭连接,因此服务器端会出现许多“断管”样式错误。

要验证这种情况,请尝试发送缓存控制头,以便IE始终必须下载全部内容。

票数 1
EN

Stack Overflow用户

发布于 2010-09-20 21:08:17

应用程序创建的写入(和刷新)模式可能会对数据包的形成和发送方式产生影响,但这似乎是最好的设置:内核从一开始就有关于要发送的数据的完整信息,并且可以自由选择数据的最佳分组化。

这似乎不太可能是造成客户问题的原因。发送可能会冲洗大量小数据包的分块输出将更加可疑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3755398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档