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網頁與檢查人員開放的網絡選項卡。你會在那裏看到任何連接錯誤。