2013-02-18 52 views
0

一个用PHP编写并位于其他地方的网站在大多数时间在5种主要浏览器中都能正常加载。调试PHP网站停止响应Firefox的原因

有时在Firefox中,网站不会加载,而是接触式服务器图标点逆时针旋转,感觉像是永远的。似乎没有出现错误消息。我删除了所有的cookie和缓存,然后重新启动firefox,然后再试一次,但仍然有相同的行为。

同时它可以在同一台计算机上的其他浏览器中运行,也可以在另一台计算机上运行firefox。

使用ping似乎没有丢包。

如何调试此问题?

该网站是stock.mrfootage.com

编辑:在标签栏

加载时,该网站的cookie被更新,该网站显示标题。

如果我同时禁用JavaScript并删除所有与该网站相关的Cookie或所有Cookie,然后重新加载,它将起作用。然后,我可以重新启用JavaScript并再次正常使用该网站。

如果另一方面,我只禁用javascript或删除cookie,Firefox的标签似乎仍然挂在加载。

它也可能与Mac OS X上的Firefox有关,因为它没有工作的三台计算机都是Mac,而我没有这个问题的两台计算机都在运行Windows。

Livehttpheaders插件根本没有显示任何标题。

+1

当你重新启动Firefox尝试检查你的进程资源管理器,并确保它完全关闭和有运行(假设你是在Windows上)没有其他firefox.exe进程。如果您的php代码陷入循环,那么与该浏览器的会话仍处于打开状态,直到该进程完全关闭。 – Pitchinnate 2013-02-18 16:23:00

+1

PHP不直接与Firefox交互:PHP在服务器上运行,Firefox是客户端/用户代理。 Firefox不会导致错误(除非您根据用户的年龄切换代码),代码本身可能是错误的。您可以使用Firefox插件“活HTTP标头”有,此时的通信卡,然后做绕在你的PHP代码,这些事件的一些记录第一线索。另外,请记住JavaScript是直接在浏览器中执行的,所以这可能是导致错误的另一个来源。 – Quasdunk 2013-02-18 16:26:45

+0

我知道PHP在服务器上运行。但是,如果该过程仍在服务器上运行,并且您使用浏览器执行了相同的过程,则无法在响应结束或您开始新的会话之前得到响应。使用Firefox,它将不会创建一个新的会话,直到你完全关闭浏览器。清除缓存不起作用。 – Pitchinnate 2013-02-18 16:30:37

回答

1

我敢打赌,问题出在HTML验证 - 这意味着你的一些HTML代码是无效的(如未封闭的标签,不正确的地方标签等)。

为了解决这个问题,你可以使用在线的HTML验证器,例如http://validator.w3.org/这会告诉你你的问题。当你修复它们时,网站应该没有问题地加载。

尽管如此,验证器会显示数百个问题,您不会想要修复所有这些问题。在这种情况下,您可以通过删除一半问题点并查看是否加载(不会卡住加载动画),从而在HTML中找到问题点。保持删除部分并将其带回,直到找到导致此问题的位置 - 然后找出错误的位置。

对于所有怀疑论者说Firefox只有在所有的HTML被下载后才被验证,这是不正确的。已知Firefox Firefox解析器中的错误会导致此行为,如此past questionbug report

+1

这不应该阻止浏览器显示页面。而且,OP写道它可以在其他计算机上的Firefox中工作。 – 2013-02-18 16:23:45

+0

不同版本的Firefox对不同的验证问题很敏感。这不是一门精确的科学,因为处理验证错误通常不是标准化的。有些人甚至会在解析引擎中考虑这些错误。 – talkol 2013-02-18 16:26:46

+1

由于@MarcelKorpel表示HTML验证是在所有html从服务器下载完成后完成的。旋转指示器让您知道它仍在尝试连接到服务器或正在下载。所以这可能会导致页面无法正常显示,但不会导致连接问题。 – Pitchinnate 2013-02-18 16:27:04

0

你可能会有一些javascript进入无限循环并导致解释器冻结。

您是否需要第三方资产,例如网页字体,JavaScript,样式表?如果是这样,很可能其中一个资源没有加载,并且由于它是同步处理的(除非您有一个异步加载程序),直到资源响应超时或HTTP状态代码等,页面才会显示。

尝试加载在Chrome或Safari网页与检查人员开放的网络选项卡。你会在那里看到任何连接错误。