2011-06-22 38 views
0

我從數據庫輸出我的網站上的數據。它工作正常,除了頁面加載時,它將開始顯示在不同的位置,頁面的各個部分將在不同的時間加載,使頁面跳轉直到加載。我希望它像大多數網站(Facebook,Twitter等)同時加載,而不是在不同時間輸出代碼部分。我正在使用PHP,我不知道是什麼導致了這一點。任何人都知道發生了什麼事情,或者是否有與此相同的問題?在不同時間加載頁面的部分

+0

你有一些現場演示的例子嗎? – deceze

+0

您是否在使用任何可能使用'flush()'函數的框架或庫? – nkorth

+0

在其他人看來,ob_start修復了它。 – Matt

回答

3

你可以嘗試輸出緩衝:

// before any output is generated 
ob_start(); 

// all your code 

// end of the script 
echo ob_get_clean(); 

這將捕獲產生的一個緩衝區中的所有輸出,並轉儲它時,腳本已經完成。但是,這意味着在查詢完成之前不會發送任何內容。也許您應該做的另一個考慮是儘可能優化數據庫查詢,以減少數據庫命中的瓶頸影響。

+0

其實就是這樣。謝謝!我在8分鐘內接受答案。 – Matt

+0

@Matt,沒問題;我只是意識到一個錯字,你想'ob_get_clean()'而不是'ob_end_clean()'(*'ob_end_clean()'丟棄緩衝區*)。我相應地更新了我的答案。另外,如果可能的話,不要忘記優化數據庫查詢。 – Dan

1

在對你的問題的評論中,你說過你用ob_start()「修復」了這個問題。實際上,緩衝整個頁面並不是一個好主意,因此所有內容都會立即顯示,這會影響您感知的加載時間,並且會讓用戶的頁面看起來更慢。研究表明,slow page loads drive people away from your site。瞄準快速加載頁面的另一個原因是Google has started using page speed作爲排名搜索結果時的信號。

像谷歌這樣的大型快速網站實際上是做相反的事情,它們通常是flush the buffer early

一些快速頁面似乎「一次加載」的原因是因爲有效的頁面緩存,負載平衡的地理位置服務器,使用CDN和其他事情,比如通過早期沖洗文檔和加載後的內容JavaScript的。

查看Yahoo! performance guidelines以獲取有關使頁面更快速的更多信息。