Chrome 挂起“发送请求”似乎与套接字相关
Posted
技术标签:
【中文标题】Chrome 挂起“发送请求”似乎与套接字相关【英文标题】:Chrome hangs on "sending request" appears to be socket related 【发布时间】:2013-04-05 16:43:19 【问题描述】:当我为我正在处理的一个相当大的应用程序加载 url 时,我会说每 3-4 次重新加载应用程序就会挂起并停止加载。 Chrome 在左下角报告“正在发送请求”。我似乎无法识别它停止的任何文件,而是找到了这个线程:
https://code.google.com/p/chromium/issues/detail?id=55046
这表明它可能是一个套接字问题。从此页面 (chrome://net-internals/#sockets) 刷新套接字会立即释放页面,并且一切都可以正常加载。这是来自该 chrome 内部页面的图片
我意识到这可能确实是一个 chrome 错误,但与此同时,我需要一个解决方法,因为用户在 chrome 中遇到了这个错误,并且无法加载应用程序。 想法?
【问题讨论】:
这个问题需要更大的赏金吗?更好地描述问题?我仍然坚持这一点- 确保您的服务器在正文末尾提供了内容长度标头和 EOF char '\0'。如果这不起作用,请尝试更改服务器的超时期限。它也可能与内容到期标题有关。祝你好运。 出于这个原因我不使用 Chrom(ium) - 我经常遇到这个错误。我想指出,如果我在我的网站上查看 apache 访问日志,当 Chrome 挂起加载时,Chrome 似乎认为它已发送请求,但它没有显示在日志中。 【参考方案1】:我知道 2 种解决方法,但没有一个是完全方便的:
-
禁用 SPDY:
"...\chrome.exe" --use-spdy=off
(很遗憾无法通过标志来完成)
禁用同步(“设置 - 断开您的 Google 帐户”)
另一个选择是减少应用程序中的连接数量(为所有客户端-服务器通信提供来自 1 个域的所有静态内容 + 1 个 websocket 连接),并在可能的情况下删除小部件(保持持久连接的 Twitter、disqus 等) , 考虑到套接字池在所有 Chrome 选项卡之间共享可能会或可能不会有帮助:(
就我个人而言,自 Chrome 21 以来,随机网站都会出现此错误,并且在某种程度上被重置池的崩溃所抵消 :)
【讨论】:
呃,好吧,减少连接也是我唯一想到的,很高兴听到其他人也在这样做- 好的,对于其他来这篇文章的人,我终于通过减少我的应用程序进行的重定向次数来解决这个问题。我们有许多图像是从同一个域加载的,但根上下文不同,这些重定向堆积起来,显然会使应用程序停滞 我没有设置同步,错误仍然存在。【参考方案2】:根据您对图像重定向的建议并使用 Fiddler2,我发现我在图像中也有很多重定向。
在我的例子中,我在 ASP.NET MVC 中有一个重写规则,它将我们的 URL 小写。我们的项目文件夹也是如此,在这种情况下,包含图像的文件夹,例如URL/Images/OurLogo.png
变成了url/images/ourlogo.png
。
更改我们的重写规则以在条件标记中包含以下行,解决了问题:
<add input="REQUEST_FILENAME" matchType="IsFile" negate="true" />
完全重写规则供参考:
<rule name="Convert to lower case" stopProcessing="true">
<match url=".*[A-Z].*" ignoreCase="false" />
<conditions>
<add input="REQUEST_METHOD" matchType="Pattern" pattern="GET" ignoreCase="false" />
<add input="REQUEST_FILENAME" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" url="ToLower:R:0" redirectType="Permanent" />
</rule>
【讨论】:
以上是关于Chrome 挂起“发送请求”似乎与套接字相关的主要内容,如果未能解决你的问题,请参考以下文章