我剛讀完這篇文章:https://developer.yahoo.com/performance/rules.html#flush,並且在我的頁面加載頂部(head,css,top banner/search/nav)後已經實現了刷新。PHP沖洗:多久和最佳實踐
沖水有衝擊性能嗎?有沒有經常這樣做?什麼是最佳實踐?
如果我要爲數據創建一個外部API,是否有意義先手動刷新,以便用戶不會等待數據返回,並且至少可以在手之前獲取一些數據?
我剛讀完這篇文章:https://developer.yahoo.com/performance/rules.html#flush,並且在我的頁面加載頂部(head,css,top banner/search/nav)後已經實現了刷新。PHP沖洗:多久和最佳實踐
沖水有衝擊性能嗎?有沒有經常這樣做?什麼是最佳實踐?
如果我要爲數據創建一個外部API,是否有意義先手動刷新,以便用戶不會等待數據返回,並且至少可以在手之前獲取一些數據?
描述的技術看起來不錯,但有幾個缺陷:
1)PHP腳本的開始和結束之間的時間相比是小的傳輸時間;根據你的消息來源,這也爲用戶節省了大約0.5秒的時間。這對你來說是相當長的時間嗎?
2)該技術不使用gzip輸出緩衝工作
3)如果你刷新過於頻繁,您要發送的上衝一個幾乎空包,這可能實際上增加了加載時間(對慢,嘈雜的連接)。
4)一旦你齊平,則無法發送任何頭
5)(小問題)的服務器響應會在分塊編碼,這意味着客戶端將不會提前知道的大小(因此下載文件時不會顯示「x%done」)。另一方面,如果您希望您的腳本運行時間較長(20+秒),則可能需要發送一些數據(例如空格),以防止瀏覽器超時連接。
不好的一面是你不能gzip的內容,以及沖洗它afaik,所以我一直喜歡gzip而不是刷新。
這使得該不是思想,因爲它似乎填充的詳細數據不是非常有用的。
然而,我同意大多數人的頭標中有更多的元數據,而不是256個字符。如果你仔細想想,這不是那麼重要。 GZip是一個很好的觀點。 – 2008-12-09 14:42:00
遵循Piskvor的觀點 - 如果您期待20s +等待,您最好提供一個基本頁面(可以進行gzip壓縮),並在緩慢過程完成時使用Ajax更新頁面。不過,您確實開始侵犯靜態HTML的基本功用。
我認爲flush是一個很好的調整機制。瀏覽器只使用大約8個線程下載內容(取決於瀏覽器)。如果你有15個圖像,瀏覽器將開始下載8個圖像,並且不會下載任何其他內容,直到其中一個完成,然後它將開始下載下一個圖像等。通過在標題後面刷新,你基本上告訴瀏覽器什麼它可以開始下載。在頁面的其餘部分被髮送(即,5秒鐘後)時,瀏覽器可能已經完成了下載css和javascript文件。這將釋放其他內容的下載線程。
您可能不希望在標題之後的任何其他位置使用flush。瀏覽器通常不會呈現未關閉的html標籤,因此發送部分頁面不會更快顯示任何內容。在收到一定數量的數據或者頁面交付完成之前,舊版IE將不會顯示任何內容。
由於這仍在閱讀中:請考慮通過例如一些異步處理結果通知。 WebSockets的。 (當問這個問題時,這不是問題) – Piskvor 2017-01-27 11:20:19