回答
沒有你顯示負責生成網站內容的代碼,沒有人可以給你一個詳細的答案 - 因爲那是延遲的地方。
然而,由於該網站使用PHP,你是最有可能使用output buffering
鑑於這種情況,下面的代碼將給予(網絡延遲+)2S一個TTFB:
<?php ob_start(); ?>
<!doctype html>
<html>
<head>
<title>Slow to Load, Slow to finish</title>
</head>
<body>
<?php
sleep(2); // Simulate slow processing
echo "Body"
?>
</body>
</html>
而這會給你的(網絡延遲+)顯示爲0的TTFB:
<!doctype html>
<html>
<head>
<title>Fast to load, Slow to finish</title>
</head>
<body>
<?php ob_start(); ?>
<?php
sleep(2); // Simulate slow processing
echo "Body"
?>
</body>
</html>
加載整個頁面的時間是在兩種情況下是相同的 - 只有在延遲爲c hanges。如果你專注於減少TTFB(爲什麼),那應該會給你足夠的信息來進一步調查。
重要:有很多frontend changes你應該在專注於TTFB之前作出。
延遲是由產生的索引頁的服務器端腳本引起的。
通過快速瀏覽您的網站,我可以猜測該網站正在使用PHP。所以,延遲是由index.php腳本中包含的內容引起的。
主機,網絡,硬件和HTTP服務器(Apache)絕對不是原因。您的圖表顯示靜態文件(.css,.js等)交付速度相當快。
所以,更多的細節你應該提供更多的信息(index.php的執行速度很慢可能有很多不同的原因......)。
我認爲這取決於你用什麼工具來衡量這類數據。當我使用webpagetest.org時 - 第一個字節的時間是292毫秒,這很好。也許你應該重新運行你的支票?
這個數字的一部分取決於你與服務器的關係 - 你必須做的越多 - 這個數字越大。這也是關於服務器硬件和連接 - 通常這是你無法控制的。您可能希望查看其他主機,但我會先運行一些測試 - 讓您的朋友在webpagetest.org(或類似網站)上測試您的網站,並查看他們獲得的值。
可能最有效的解決方案是使用具有本機HTML緩存功能(靜態和動態)的CDN。 TTFB依賴於您在原始服務器上快速處理HTML的能力,您可以通過向CDN提供新鮮的緩存副本,完全跳過處理時間。
我最近寫了一篇關於TTFB延遲因素和不同資源平均加載時間的報告(基於1B會話中收集的數據)。您可能會發現它很有用: http://www.incapsula.com/the-incapsula-blog/item/809-using-cdn-to-improve-seo-and-ttfb
什麼是「原生HTML緩存功能」?我能找到的這個術語的唯一參考資料是堆棧溢出=)的兩個答案。 – AD7six
可能是我的錯誤措辭。 :) 我只是說它可以做靜態和動態緩存爲默認。 –
這些術語在沒有解釋的情況下扔掉沒有多大意義。我假定靜態意味着「正常」,即CDN只是承認緩存過期標題,而動態的意思是例如cdn認識到響應不會改變,忽略任何相關的緩存頭並緩存,並在後端立即提供緩存結果,請求獲取內容的新副本(替換未來請求的緩存副本) - 即類似於[清漆的寬限機制](https://www.varnish-software.com/static/book/Saving_a_request.html#core-grace-mechanisms)。 – AD7six
您可以使用TTFB的cloudflare和cdn服務。如果你沒有采取適當的反饋改變你的主機服務器。
請詳細說明一下cloudflare和cdn服務是什麼以及它們的功能。他們如何解決有問題的問題。還請提供鏈接 - 但不要將其作爲「僅鏈接答案」。 – TobiMcNamobi
我已經處理了巨大的TTFB(8-10秒)並拼命尋找解決方案。經過搜索和搜索沒有任何成功,我決定仔細看看我的PHP代碼和數據庫索引。
輸出緩衝解決方案降低我的TTFB有點但不夠。我再次有用戶投訴。
真正的問題是服務器處理時間(DB查詢和PHP環路)和你產生的HTML源代碼。
現在,我建議採取以下步驟:
- 看看數據庫索引。請確保您使用「所有數據」的適當索引,您將返回。使用Explain來驗證您的索引是否被使用,使用哪一個以及如何使用它。
在我的情況下,我返回一個對象數組,我檢查了我的主表的索引。所有看起來不錯,但我忘記了我的對象包括其他表中的其他小對象。這些表格未正確編制索引。因此,我的巨大TTFB。我只是從8秒通過2秒,只是我正確的索引添加到正確的表。
- 看看你的PHP代碼。
您可能必須在循環一些環能是緩慢的過程。您應該使用PHP MVC框架。你的選擇。我不會說出任何名字。
避免這樣的代碼,即使它工作。我知道,一些PHP4程序員會說這很好。 :)
$query = "SELECT something FROM table";
$result = mysqli_query($mysqli, $query);
if($result) {
while($row = mysqli_fetch_assoc($result)) {
$query = "UPDATE other_table SET something_else = "'.$row['something'].'";
$result2 = mysqli_query($mysqli, $query)
}
}
- ,請注意生成的HTML代碼。
例如,你通過PHP循環生成Javascript代碼。邏輯是好的。加載時間不是。假設您將100行返回到表中。對於每一行,您只有5個可能的操作(更改狀態,編輯,刪除,複製,打印)。這意味着5個jQuery對話框(包含控件的HTML div)和5個JS腳本乘以100行=數千行代碼將寫入該頁面。 我的情況,我的HTML代碼4MB超過32.000行。在將所有這些對話框放在正確的JS函數後,從2秒到1秒以下。
結論,(如果你還在讀這:) :)不要搜索一些神奇的功能,以減少你的TTFB。 搜索您的代碼和數據庫。
PS:有些其他的事情將有助於提速:瀏覽器緩存和壓縮,使用CDN的,壓縮HTML,CSS和JS,推遲的JavaScript解析,結合圖像到CSS等 使用谷歌網頁速度,谷歌審計更多的性能建議。
.htaccess中的錯誤也可以大大增加TTFB。
我不得不刪除Wordfence留下的一些舊行代碼來解決我的8-12秒TTFB(現在500毫秒)。
這就是它對我的。我有一個糟糕的.htaccess文件,使我的TTFB增加了1000毫秒。 – Ken
- 1. Joomla網站上第一個字節的時間很長
- 2. 如何減少我的網站的javascript/jquery/ajax加載時間?
- 3. 我會如何減少wordpress網站的加載時間?
- 4. 在我的網站上滾動時如何減少延遲?
- 5. EF:我如何減少第一個DataContext初始化時間
- 6. JavaScript的第一個字節的時間?
- 7. 我的WordPress的網站需要很長時間來加載如何減少它?
- 8. 減少網站等候時間
- 9. CakePHP網站的主頁的時間到第一個字節很長
- 10. 減少我Wordpress站點上的等待時間
- 11. 如何減少我的頁面上的CURLOPT php加載時間?
- 12. 如何在第一時間減少drupal中的頁面加載時間
- 13. 減少網頁的加載時間
- 14. 縮小/緩存後減少網站的加載時間
- 15. 減少wordpress中的網站加載時間
- 16. 減少網站加載時間的優化
- 17. 有效減少網站加載時間[SEO的角度來看]
- 18. 如何減少MongoDB中第一個查詢的查詢響應時間?
- 19. 如何減少文件上傳時間?
- 20. 如何減少網站的整體字體大小?
- 21. 如何減少SVM的執行時間
- 22. 如何減少livecode的時間
- 23. 如何減少jquery.min.js的CPU時間?
- 24. 如何減少file_get_contents的執行時間
- 25. 如何減少SSH2的「加載」時間
- 26. 如何減少時間的複雜性
- 27. 如何減少使用WKWebView的應用程序網站加載時間?
- 28. 我該如何減少連接上的unix telnet上的超時
- 29. 第一個字節時間得分F
- 30. 如何減少iOS中的「實時字節」?
儘快輸出頭部,可以獲得很大的性能提升。如果您的頭部包含css文件或腳本(儘管它不應該),那麼瀏覽器可以與這些下載並行。如果瀏覽器必須等待解析文檔,它甚至不知道它可以下載什麼。 –
在'ob_start'' <?php echo''之前發送第一個字節; ob_start(); ?> – ar099968