2009-03-04 148 views
0

我已经创建了一个简单的JSF图片浏览应用程序,并且我遇到了Firefox的问题。Firefox请求图片缓慢

该应用程序本身在Tomcat中运行。这些图片存储在由Apache提供的目录中。我有9张图片在网页上显示。服务器位于与客户端分开的机器上。当我尝试在Firefox中加载页面时,通常6张图片会立即加载(< 500毫秒)。其他三个将需要15至20秒加载。看看apache日志,看起来firefox并没有要求这三张图片,直到15-20秒过去 - 也就是说,我看到6个请求在同一时间,然后15秒后,其他三个。我已经在Internet Explorer中尝试了该网站,而IE没有这个问题;它立即加载所有9张照片。我尝试了几种不同的机器,并获得相同的结果。 html很快渲染,< 200ms,所以我不认为这是一个JSF问题(尤其是因为图片是从Apache服务的)。

数字并不总是一样的 - 有时它会加载8张图片,有时是7张,有时第二批请求会一次全部到达,有时它会加载2个以上,等等。我不确定这是一个Firefox还是一个bug,或者有什么服务器端可以处理,但我认为我会把它扔到那里,看看有没有人有任何想法可以尝试。

如果有帮助,这里是从Firefox

Apache日志行
192.168.1.30 - - [04/Mar/2009:14:25:40 -0500] "GET /work/DSCF0185_thumbnail.jpg HTTP/1.1" 200 7902 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)" 

,一个来自IE

192.168.1.30 - - [04/Mar/2009:14:34:14 -0500] "GET /work/DSCF0179_thumbnail.jpg HTTP/1.1" 304 - "http://192.168.1.83:8080/app/browse.jsf" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; MS-RTC LM 8; Windows-Media-Player/10.00.00.3990; FDM; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)" 

编辑 我从萤火虫的时机 - 这表明整个请求(例如)18秒,“接收数据”的时间为17.9秒,其余的则排队等候。直到17.9秒结束,我没有看到Apache日志中的实际请求,这导致我相信这是一个Firefox的事情,尤其是因为IE不显示问题。如果它在服务器中,我希望在两个浏览器中都能看到问题。

关闭firefox中的流水线。

正如所指出的,我的IE日志显示它正在打高速缓存 - 我的错误,抓住了日志文件的错误部分。这里有一个干净的日志行 - 即使在清除缓存后,IE也不会显示与firefox相同的问题。

192.168.1.30 - - [04/Mar/2009:15:52:18 -0500] "GET /vantagework/DSCF0189_thumbnail.jpg HTTP/1.1" 200 5805 "http://192.168.1.83:8080/vantage/browse.jsf" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; MS-RTC LM 8; Windows-Media-Player/10.00.00.3990; FDM; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)" 

回答

0

事实证明,这是由我的apache配置引起的。一些调整调整已经完成,并且恢复到开箱即用的apache配置解决了问题。

3

使用Firebug的“网”控制台来检查它是否是Firefox或网络服务器,为你的网络服务器可能会考虑它的时间来接受连接。

Firebug的“网”控制台会告诉你它开始请求东西的时候,给你请求图像(排队,等等等等)的不同部分的详细分类 -

0

根据您的日志片段,IE正在从缓存中检索图像,Firefox正在从服务器获取图像。因此,如果缓慢提供图像的服务器配置出现问题,如果您先清除缓存,则只会在IE中看到类似的行为,所以我会尝试验证非缓存图像确实会采用不同的数量的时间在Firefox和IE之间下载。

我要检查的另一件事是看看您是否在Firefox中启用了pipelining。如果你这样做,我建议你禁用它,这可能会导致你的服务器出现问题。