2012-08-08 64 views
3

例如,讓ob不打開。每次php引擎都會迴應它會將這件事返回給瀏覽器嗎?所以我對ob的看法是,收集所有數據並且一次不發送給瀏覽器會導致加載時間積極。但是,如果我錯了,你可以在PHP中使用它的意義是什麼(真相背後的意思)?PHP中的'output buffering'用於增加頁面加載時間

+0

請考慮這一點,太http://stackoverflow.com/questions/2982121/php-speed-many-echos-vs-building-a-string – user1477388 2012-08-08 13:02:21

+0

這很大程度上取決於*你輸出什麼。如果您一次打印1個字節並強制將其刷新到客戶端,那麼......不要,除非您喜歡*浪費TCP ACK上的帶寬(儘管數量很少)。但是如果你正在構建一個50MB的響應,那麼在你完成構建之前就開始發送它,如果沒有其他的話,爲了內存使用的目的。不過請注意,Web服務器可能會提供自己的緩衝層,所以僅僅因爲您使用PHP輸出內容並不意味着它會立即發送到客戶端。 – DaveRandom 2012-08-08 13:33:35

回答

1

如果你的PHP腳本執行得很快,它將沒有什麼不同。如果你的PHP腳本執行速度很慢,但輸出很短(小的HTML文件),它沒有什麼區別。

它會產生變化的唯一方法是腳本執行很長時間(例如從查詢中返回大量數據)並且輸出HTML太大以致於對用戶造成顯着差異由於輸出大於帶寬,它將以更小的片段發送。

基本上,它是一個快速執行的小文件,由於用戶只能從服務器下載少量數據,因此它將不可見。如果代碼需要很長時間才能執行但返回少量的HTML,那麼用戶仍然必須等待代碼執行完成才能從服務器獲得輸出。如果代碼需要很長時間才能執行,並且輸出太大以至於服務器可以將它們發送給用戶的速度比他們能夠下載的速度快(服務器帶寬超過用戶帶寬),那麼會出現可測量的差異該網站的用戶 - 但只有這樣。