改善 Magento TTFB 的 5 個基本技巧

已發表: 2019-01-08

這是 Vasili Nikolaev 的客座文章。

第一個字節的時間 (TTFB) 是網站最重要的速度指標之一。 它表示用戶輸入您的 Magento 商店 URL 後將經過多長時間以及他們獲得任何響應的時間,即使小到 1 個字節(因此名稱為“第一個字節的時間”)。

第一個字節的時間對於人類(他們不喜歡等待)和搜索引擎機器人(谷歌討厭緩慢的網站並將它們排名較低)都至關重要 - 單擊此處了解有關一流的 Magento 2 SEO 解決方案的更多信息魔術師)。

但與此同時,谷歌的發言人之一約翰·穆勒 (John Mueller) 提供了令人信服的證據,表明谷歌不使用 TTFB 進行排名:

Magento 2 TTFB | MageWorx 博客

因此,我們的建議是不要過度關注 TTFB 來進行 SEO,而是專注於用戶體驗和商店性能。

為什麼 TTFB 比完整頁面加載(稱為“最後一個字節的時間”)更重要? 好吧,因為您越早加載第一個字節,用戶就會越快開始閱讀您的內容。 他們無法立即看到頁面上的每張圖片並不重要。 當您的網絡服務器忙於加載其餘內容時,為用戶提供一些事情更為重要。

目錄

  • 1. 了解您的瓶頸以消除它們
    • 什麼是好的 TTFB?
  • 2.遷移到更合適的數據庫引擎
  • 3. 將服務器設置與您當前的流量需求相匹配
  • 4. 設置更好的緩存解決方案
  • 5.擺脫無用的擴展
  • 額外提示:調整商店和客戶日誌記錄設置
  • 為性能而戰

1. 了解您的瓶頸以消除它們

什麼是好的 TTFB?

Magento 2 TTFB | MageWorx 博客
谷歌表示目標是低於 200 毫秒的 TTFB。 在 200 毫秒以下,搜索引擎會將您排名最高。 一旦您超過此值,Google 將對您的網站進行處罰。 600 毫秒或更多意味著您甚至無法通過 Google 自己的 TTFB 測試。

有很多因素會影響您的 TTFB。 沒有特別的順序:

  • Web 服務器配置和資源,
  • 域名服務器解析速度,
  • 頁面代碼執行時間,
  • 實施後端緩存解決方案,
  • 網絡猜想。

使用第三方服務或使用 Google TTFB 測試檢查您的 TTFB 值。 您還可以在此處將您的結果與熱門網站或您的競爭對手進行比較,以獨特的視角了解您的商店如何為移動用戶加載。

Magento 2 TTFB | MageWorx 博客 另一個很棒的診斷工具是Magento 2 Profiler 有了它,您可以輕鬆地將每個頁面請求分解為更小的塊,這些塊可以快速可視化和分析。

在表中,要特別注意 2 個重要值,Time 和 Count。 時間是不言自明的。 這是用戶請求和服務器響應之間的實際延遲。 Cnt 行對應於該項目在創建輸出之前被調用的次數。

將數據庫探查器與 Magento 2 默認探查器結合使用來分析數據庫查詢是值得的。

Magento 2 TTFB | MageWorx 博客 這是您需要採取的第一步:啟用 Magento Profiler 並查看存在 TTFB 最大問題的頁面。 雖然您可以使用默認探查器,但我們建議您設置探查器 SQL。 它是免費的,並且可以方便地概述每個會話的查詢數量。

Profiler 會將所有請求分割成更小的部分,因此您可以立即看到哪些部分拖累了您。

2.遷移到更合適的數據庫引擎

如果 Magento 2 存儲數據庫效率低、速度慢或使用的存儲引擎不是處理 Magento 的最佳選擇,它很容易成為最大的性能瓶頸。

為什麼這很重要? MySQL 有多種存儲引擎可供選擇。 我們在官方 MySQL 文檔中統計了至少 10 個受支持的解決方案,而且還有更多。

雖然您可以將 Magento 與默認的 MyISAM MySQL 引擎一起使用,但與默認設置相比,替代數據庫引擎(例如 MariaDB Ari存儲引擎或 Percona XtraDB 引擎)可以使您的存儲更穩定(有時)更快。

例如, Aria引擎在 Magento 強制存儲引擎使用大量臨時表的情況下使用更智能的方法。

Percona是 MySQL 的另一個分支,它隨著時間的推移集成了許多性能調整以加快數據庫查詢。 MyISAM相比,它處理大量並行查詢的速度要快得多,並且擅長事務處理。

儘管數據庫優化的最佳建議是仔細檢查您的需求並選擇最適合您的引擎,但我們有一些技巧對每個人都有用:

  • 避免使用默認 MySQL 進行商店搜索。 安裝 Elasticsearch 以加快您網站上的所有搜索查詢,
  • 選擇最適合您的數據庫引擎。

3. 將服務器設置與您當前的流量需求相匹配

在基礎設施上廉價並不是一個好主意。 隨著時間的推移,穩定增長的企業將會看到更多的客戶、更多的交易和更多的訂單。 因此,將您的設置保持在 80% 的容量以適應隨機使用高峰和事件產生的客流量是健康的。 這 20% 可以在所有情況下保持良好的性能水平。

一個稱職的託管團隊會告訴您,您需要哪些系統要求才能順利運行。 但是,如果您在一段時間內迅速成長,那麼您有責任制定升級路線圖。

Magento 商店中有許多關鍵點會嚴重影響您的系統要求:

  • 商店規模(商店瀏覽次數),
  • 目錄中的類別和 SKU(帶有屬性和屬性集),
  • 平均流量數(平均頁面瀏覽量和歷史峰值),
  • 每日交易(數字下載、支付和類似操作)。

一般來說,您的平均流量將直接影響您需要多少 CPU 能力。 因此,在您找到最佳 CPU 設置後,將您的 RAM 與您的 CPU 要求相匹配,以創建一個平衡的 Web 服務器配置文件。

數據庫存儲大小取決於您當前的 RAM,因此您應該選擇足以滿足所有當前需求的內存。 也為一些呼吸空間創造一個性能緩衝。 您的目標是始終保留至少 20-25% 的備用 CPU 和 RAM 以應對偶爾的流量高峰。

4. 設置更好的緩存解決方案

網站緩存是繼炸薯條發明之後的下一個最佳選擇。 服務器緩存提高了網站的敏捷性,使其感覺更快。 緩存通過將常用數據從 SSD 或硬盤驅動器移動到 RAM 來工作。

HDD 可以順序讀取高達 200 MB/秒的數據,SSD 高達 3200,DRAM 模塊可以高達 20 GB/秒。 這給了我們 x10 或至少一個數量級的差異。

RedisVarnish都是 Magento 商店最受歡迎的升級之一。 這是 Magento 2 的推薦緩存選項。這兩種解決方案都適用於 Magento 1。

Varnish 是一個具有挑戰性的配置工具,但如果做得好,它可以在 100-200 毫秒內提供 TTFB 值。 對於整頁緩存配置,TTFB 的範圍在 250 毫秒內。

Varnish 的另一個明顯優勢——它適用於更多的網頁。 雖然 FPC 不適用於包含大量動態內容的頁面,但 Varnish 即使對於這些具有挑戰性的用例也能提供更好的性能。

5.擺脫無用的擴展

老實說,禁用未使用的擴展是任何 Magento 2 商店的第一秘訣,但它經常被忽視。 在您的網站上運行的每個擴展程序都會佔用您的一些資源。 如果它們配置不當,它們也可能會減慢您的 TTFB。

請記住:服務器需要在向用戶發送任何反饋之前執行此代碼。

清理你的擴展列表也會加快 Magento 的速度。 即使您無法禁用其中任何一個,也要讓您的 Magento 商店和第三方擴展保持最新狀態,以便從錯誤修復和優化中受益,這肯定會使您的網站性能更好。

額外提示:調整商店和客戶日誌記錄設置

確保關閉 Magento 客戶日誌記錄。 這將幫助您減少花費在數據庫查詢上的時間。 這不是一個巨大的影響,因為客戶記錄是一個相對較小的活動。 性能提升將取決於當前訪問您商店的客戶數量。

我們不建議您關閉商店日誌記錄。 這是一個有價值的工具,有助於 Magento 故障排除。 但是,您可以將它們移動到第三方服務,例如 Papertrail,而不是讓存儲日誌佔用服務器時間。

為性能而戰

沒有兩個 Magento 商店是相同的。 他們每個人在優化店面以提高速度方面都將面臨不同的挑戰。 對於具有許多複雜的第三方擴展、大型數據庫和多個商店的舊(和更大)Magento 網站來說尤其如此。

雖然我們永遠無法“贏得”這場性能之戰,但我們的共同目標是讓 Magento 商店在所有電子商務網站中的速度、用戶體驗和安全性方面達到一流水平。


關於作者

Vasili Nikolaev 一直在尋找最有效的秘訣,讓店主的生活更輕鬆一些。 對他來說,沒有什麼比為一個具有挑戰性的問題找到一個很好的解決方案更令人滿意的了。