在 2021 年我們整理出 16 個最佳方法提升 WordPress 的速度。之前我們在其它的網站已經發佈了許多有關優化和加速 WordPress 的教學,但是文章沒有連貫性,可能會會造成您的混淆,因此,我們將與有關 WordPress 的所有相關知識,整理在這邊,無論您是剛開始使用 WordPress 的新手,還是經驗豐富的設計師、開發人員,希望可以在這篇文章裡找到有用的資訊 !
根據 w3techs 2021 年最新的統計,目前超過 40.4% 的網站是使用 WordPress 建置的,儘管這很棒,但是這也意味著有數千種不同的主題、外掛和技術必須共存,對於日常的 WordPress 使用者,當他們的網站開始出現瓶頸並且他們不知道要從哪裡開始進行排除問題時,這可能很快就變成噩夢。
目錄:
- WordPress 網站類型:靜態或動態
- 選擇高性能 WordPress 主機商
- 選擇離您的訪客最近的伺服器
- 高級 DNS 比免費 DNS 更好
- 您的 WordPress 佈景主題很重要
- 低品質 WordPress 外掛
- WordPress 優化設定
- 為什麼快取如此重要
- 圖片優化是必須的
- 微調您的資料庫
- 使用內容傳遞網路 CDN
- 需要時將媒體庫和電子郵件分離
- 如何找到效能瓶頸和慢外掛
- 後端最佳化的建議
- 前端最佳化和外部服務的提示
- 優先為行動裝置進行最佳化
WordPress 網站類型:靜態或動態
在我們進行優化之前,首先必須了解 並非所有 WordPress 網站都是相同的,這就是為什麼許多使用者遇到問題的原因,因為您不能以相同的方式解決每個問題,我們總是給 WordPress 網站一個分類:靜態或動態,因此,讓我們首先探討這兩種類型的網站之間的區別。
大部分是靜態網站
靜態通常包括部落格、小型企業形象網站、小量文章的新聞網站、個人攝影等等網站,意思是說這些 WordPress 網站上的數據 變化不大 (也許一兩天才變化一次資料),大多數這類型的網站,都將被視為靜態網站。
這一點非常重要,因為許多請求可以閃電般的速度直接從伺服器上的快取直接處理 ! 不用擔心我們將在下面進一步探討快取長度的主題,這意味著他們將擁有更少的資料庫的變動,相對的對主機效能要求也不會高。
高動態網站
另一方面,甚麼事高度動態的網站,這些網站包括電子商務 (WooCommerce 或 Easy Digital Downloads)、社區會員、論壇型態 (bbPress 或 BuddyPress) 和學習管理系統 (LMS) 等網站。
所謂動態網站,是指這些 WordPress 網站上的數據 經常變動 (伺服器的資料庫每隔幾分鐘甚至每秒就變動一次)。這意味著並非所有對伺服器的請求都可以直接從快取中得到資料,並且需要伺服器資源和資料庫快速查詢。
這些網站通常還具有 大量的客戶端訪問者和活動,在一般的靜態 WordPress 網站上,訪問者可能會停留 5 到 10 分鐘,直到他們找到所需的東西 (這是一個很高的數字,通常跳出率要比這個數字高得多);反觀在動態網站上,情況恰恰相反,訪客通常會來到該網站與某物或某人互動,如果他們正在學習線上課程,那麼他們待上幾個小時並不稀奇。
連接到您的 WordPress 網站主機的同時訪問者的添加速度很快,更糟糕的是,除了「不可快取的內容」問題之外,您還有大量同時間的訪問者。
選擇高性能 WordPress 主機商
WordPress 主機商是停放您所有網站數據的公司,您購買了一個方案計劃,所有圖片、內容、影片等都存放在位於主機數據中心的伺服器上,WordPress 主機商為您提供了一種訪問數據、管理數據並將透過網路連接到您的網站訪問者的簡便方法,很簡單吧? 但是,卻不完全是這樣而已。
您將在網上遇到三種非常不同的 WordPress 主機類型,讓我們深入探討每個優點和缺點,從一開始就選擇正確的主機是非常重要,否則,您只會導致頭痛和浪費時間。
WordPress 共享主機
這是目前 WordPress 最受歡迎的類型是「共享主機」,也有人稱之為虛擬主機,其中包括知名最大的主機商,例如:Bluehost 和 HostGator 等 EIG 公司以及 Siteground、GoDaddy 和 InMotion 等主機託管商,他們通常使用 cPanel 或 plesk,普通客戶通常每月支付 3 到 25 美元。
任何使用這種類型的虛擬主機託管服務的人有時都會遇到速度緩慢的問題,這只是時間問題。
為什麼? 由於 共享主機 往往會使他們的服務器擁擠,這反過來又會影響網站的性能,為了讓網站之間不會因資源使用過度,主機商都會使用 CloudLinux 方式加以控制資源。
網站暫停或經常發生 Error 500 的錯誤是您常遇到的事情,因為它們必須限制所有網站內容並整合資源以利生存;甚至更糟的是網站停機嚴重問題。
即使您不知道,您的 WordPress 網站也很可能與 200 多個其他網站位於同一台伺服器上,其他網站的任何問題 (中毒、被駭) 都可能會影響您的網站。
無論您如何計算,每月 3 美元的託管費用,對主機商都不會產生任何利潤,特別是當您將開出一張客服單後,客戶服務的人事成本已經造成主機商處於虧損狀態。
他們賺錢的方式在於其他服務加價和隱性收費,這些費用包括網站遷移、網域註冊、SSL 證書、掃毒服務等等;另一種常見加價策略是提供高額的第一次註冊折扣,但是一旦主機託管續約到來,您就會收到真實的帳單。
在主機後台執行的操作是限制客戶端使用大量資源,反過來,這最終導致那些憤怒的客戶離開,從而為更多不使用大量網站資源的客戶騰出空間,最後,主機託管公司推銷更廉價方案計劃並造成客戶的惡性循環,他們希望客戶不會使用大量資源並會購買加價服務。
由於託管的網站的數太多,共享主機的客戶服務和主機商的客戶服務幾乎總是不合乎比例,共享主機必須有更多的網站託管才能獲利,這通常會給客戶帶來不愉快的體驗。
自建 WordPress VPS 主機
WordPress 託管的第二種類型是自建 VPS 虛擬主機,這種人群通常由 LANP 或 LNMP 安裝包來建置 VPS 主機,他們通常為了省下託管費用,但他們通常也關心 WordPress 的效能對網站業務成功的重要性。
主機的建置可能包括使用第三方 VPS 提供程序,例如:Digital Ocean、Linode 或 Vultr;或是使用 ServerPilot、Bitnami 之類的工具來更輕鬆地管理 VPS。
DigitalOcean 提供的小型 VPS 每個月 5 美元起,ServerPilot 受歡迎的方案計劃每月 10 美元起,因此,根據您的設置,您可能每月要花費 5 到 15 美元或更多費用。
自建 VPS 主機的方法可以降低成本,但是這也意味著您要花更多的精力來處理發生故障,或優化服伺服器的性能。
VPS 虛擬主機的方法可能很棒,但是如果您不小心,它也會適得其反,如果您不懂 Linux 技術,或者只是想試一試的心態,就不要走這條路! 您的時間是寶貴的,您應該將時間其花在網站內容上或發展營銷業務上。
全代管 WordPress 主機
第三種網站託管是我們 (WooWP) 在 Kinsta 提供的 Managed WordPress 主機,這類型的主機可以為您處理所有與後端伺服器相關的任務,並在需要時提供支援,它們通常經過 WordPress 優化服務,並且通常包括一鍵創立 WordPress 環境和自動備份等功能,他們的客服支持團隊更加了解他們的 CMS 方式,因為他們每天都專注於 WordPress。
如果您想節省時間,那麼 Managed WordPress 主機 就是您的理想之選 ! ????
Managed WordPress 主機方案計劃的費用通常在每月 25 美元到 150 美元不等,具體取決於您網站的大小和需求,諸如 jQuery、Intuit、Plesk、Dyn、NGINX 乃至美國白宮之類的大型公司都在使用 WordPress 託管其網站。
您可能熟悉或當前正在使用的一些受歡迎的 Managed WordPress 主機包括:WP Engine、Flywheel、Pressable、Media Temple、Pressidium 和 Pagely。
Kinsta 採取不同的方法
但是 Kinsta 將 Managed WordPress 主機提升到一個新的水準,Kinsta 的託管平台不屬於任何傳統託管類別,Kinsta 的整個基礎架構都建立在 Google Cloud Platform 之上,與傳統的共享主機、VPS 虛擬主機或專用主機的基礎架構不同。
Kinsta 平台上的每個 WordPress 網站都在一個隔離的軟體容器中運行,該容器包含運行該網站所需的所有軟體資源 (Linux、NGINX、PHP、MySQL),這也就是說運行 每個網站 的軟體 是完全獨立的,即使在您自己的網站之間也不會共享資源。
每個網站容器都在多個 Google 數據中心之一的虛擬主機上運行,每台 VM 執行個體最多具有 96 個 CPU 和數百 GB 的 RAM,硬體資源 (RAM / CPU) 由我們的虛擬主機根據需要自動分配給每個網站容器 (一種簡潔的功能,我們稱為 自動縮放)。
每年 Review Signal 都會發佈其 WordPress託管性能基準測試,從 Starter 一直到 Enterprise 方案計畫,Kinsta 連續 5 年證明是所有級別中最好的主機託管公司而感到自豪 !
Kinsta 的客服沒有分成 1 級或 2 級的客服代表,整個客服團隊由 WordPress 開發人員和 Linux 工程師所組成,其中許多人管理著自己的伺服器,開發了主題和外掛,並為 WordPress 核心做出了貢獻,這樣可以確保您會從使用 WordPress 並進行開發的人那裡獲得專家建議,解決您的問題。
要了解有關為什麼您應該選擇 Kinsta 進行管理 WordPress 網站的更多訊息,請閱讀 我們為什麼 – Kinsta 有何不同。
但是,您無論選擇誰作為 WordPress 託管服務主機商,都應始終遵循以下伺服器器功能,以確保您的網站可以快速運行。
選擇 PHP 7 或更高版本獲得最佳性能
PHP 是一種開放源碼的伺服器端腳本和編程語言,主要用於 Web 開發,大部分 WordPress 核心程式以及您的外掛和主題都是用 PHP 編寫的,這使 PHP 成為 WordPress 社區非常重要的語言,您應該確保 WordPress 主機至少提供 PHP 7 或更高版本。
您的主機將在您的伺服器上為您提供不同版本的 PHP,而更新的 PHP 7.4 提供了巨大的性能改進。
實際上,在 Kinsta 的 PHP基準測試中,如果將 PHP 7.4 與 PHP 5.6 進行比較,它每秒可以處理 3 倍的請求 ! PHP 7.4 的平均速度也比 PHP 7.3 快 9%,這也會影響您的 WordPress 管理控制台反應能力。
更快的速度和更高的安全性是 Kinsta 始終提供最新版本 PHP 的原因,您可以在 MyKinsta 控制台中更改 PHP 版本。
選擇一個使用 NGINX 的主機
在伺服器架構中,每個 WordPress 主機都有一個 Web 伺服器,最常見的選擇是 NGINX 和 Apache。
強烈建議與使用 NGINX 的主機一起使用,因為它源於規模化性能優化,在性能基準測試中,NGINX 的性能通常優於其他流行的 Web 伺服器,尤其是在具有靜態內容或高併發請求的情況下,這就是 Kinsta 使用 NGINX 的原因。
一些使用 NGINX 的知名公司包括 Autodesk、Atlassian、Intuit、T-Mobile、GitLab、DuckDuckGo、Microsoft、IBM、Google、Adobe、Salesforce、VMWare、Xerox、LinkedIn、Cisco、Facebook、Target、Citrix Systems、Twitter、Apple、Intel 等。
根據 W3Techs 的調查,Apache 佔所有網站的 41.0%,是最廣泛使用的選項,但是,如果您查看高流量網站 (排名前 10,000 個) 中最受歡迎的 Web 伺服器,則 NGINX 使用率為 40.1%,而 Apache 使用率僅有 18.4%,現有的一些資源最密集的網站都在使用 Nginx,包括 Netflix、NASA 甚至 WordPress.com。
主機的網路選擇
選擇 WordPress 主機時,您甚至可能或甚至不考慮詢問或研究他們使用的網路,但您應該要考慮網路的問題,網路可能會對您網站的性能甚至 WordPress 控制台的快速性產生巨大影響,許多主機商會避開此問題,因為他們會選擇最便宜的網路來降低成本。
您應該要了解以下幾個問題:
您正在用哪個網路傳輸數據 ? 它的大部分是通過公共 ISP 網路,還是諸如 Google 或 Microsoft 之類的私有基礎結構? 這些大型提供商的網路經過構建和優化,以降低延遲和加快速度,他們甚至擁有自己的海底網際網路電纜 !
您使用的網路是否有多方連接? 如果意外切斷網路電纜會怎樣? 這種情況比您想像的更多。
早在 2017 年,Google 宣布了其標準層網路,該網路速度較慢但成本較低,但在 Kinsta 將使用 Google 高級層網路用於所有方案計劃,以確保您獲得閃電般的速度。
Google 說明高級層網路通過減少公共網際網路上的傳輸時間來提高網路性能,數據封包盡可能進入 (離開) Google 的網路,並儘可能靠近用戶,然後在到達 VM 之前先經過 Google 的骨幹網,標準層通過公共傳輸 (ISP) 網路而不是 Google 的網路將 GCP 的出站流量傳遞到網際網路。
換句話說,它可能更易於理解:
高級層數據封包在 Google 的網路上花費的時間更多,而反彈的次數更少,因此性能更好 (但成本更高)。
標準層數據封包在 Google 的網絡上花費的時間更少,而在公共網絡上花費更多時間,因此性能更差 (但成本更低)。
這有多少影響? 好吧,對於跨國的傳輸的數據,高級層網路平均比標準層網路快 41%,對於前往附近地區 的數據,高級方案的速度要快 8% 左右,雖然網路僅佔頁面總加載時間的一小部分,但是已每毫秒計算 !
備份網路也是關鍵,這就是 Google 為何在 Google 網路上的任意兩個位置之間至少使用三個獨立路徑 (N + 2) 的原因,即使在發生中斷的情況下,也有助於確保流量繼續在這些網路位置之間傳輸。
正如您現在可能已經知道的那樣,網路方面的背後工作很多,確保您的 WordPress 主機使用信譽良好的主機,並且不選擇較低價的主機以降低成本。
HTTP / 2 是必須具備的
HTTP / 2 是 2015 年發布的網路協議,只在加快網站交付速度,由於瀏覽器支援,因此需要HTTPS (SSL),如果您的 WordPress 主機不支援 HTTP / 2,則應開始尋找新的主機商,隨著整個網路向 HTTPS 的遷移,這不再只是一個不錯的功能,這是必須的。
HTTP / 2 性能的提高歸因於多種原因,例如:支援更好的多工、平行架構,使用 Huffman 編碼的 HPACK 壓縮,ALPN 擴展和伺服器推送A。在 HTTPS 上運行時,曾經有相當多的 TLS overhead,但是現在有了 HTTP / 2 和 TLS 1.3 可以減少很多 overhead,在 Kinsta 的伺服器上的 CDN 一樣支援 HTTP / 2 和 TLS 1.3。
HTTP / 2 的另一個重大優勢是,對於大多數 WordPress 網站,您不再需要擔心連接 (合併文件) 或 Domain Sharding,這些現在是過時的優化方式。
選擇離您的訪客最近的伺服器
WordPress網站選擇託管主機時,您應該做的第一件事就是確定大多數訪問者或客戶來自何處,為什麼這很重要? 因為您託管網站的主機位置在確定總體網路延遲和 TTFB 中有著重要作用,它還會影響您的 SFTP 速度和 WordPress 管理控制台的速度。
網絡延遲:這是指網路上數據傳輸所涉及的時間和 / 或延遲,換句話說,數據封包從一個點到另一個點需要多長時間,如今,這通常以毫秒為單位;但是,這取決於網路距離,可能需要幾秒,當然越接近零越好。
TTFB:這代表到第一個字節的時間,簡而言之,這是瀏覽器在從伺服器接收其第一字節數據之前必須等待多長時間的度量,獲取數據所需的時間越長,網站顯示頁面所需的時間就越長,同樣,越接近零越好。
在本文中,我們不會為您帶來所有技術細節,您需要知道的是,您希望網絡延遲和 TTFB 盡可能越短,實現此目的最簡單的方法之一是選擇一個最接近您的訪客的伺服器,您可以按照以下提示確定最佳位置。
提示 1 – 在 Google Analytics 中檢查訪問者的地理位置
您可以做的第一件事就是查看訪問者在 Google Analytics 中的地理位置,您可以在「目標對象 → 地理區域 → 區域」下找到它。
在下面的示例中,您可以看到超過 69% 的流量來自台灣,因此,在大多數情況下,您可能希望將 WordPress 網站放置在台灣的伺服器上,您還可以進一步過濾數據到城市,如果您是本地公司,這一點尤其重要,通常我們會建議將網站放在台灣彰化數據中心。
提示 2 – 檢查電子商務數據
如果您經營一家電子商務網站,請確保還要檢查以 查看您的客戶來自何處。當然,這是您營銷收入的方式,因此這些是您最重要的訪客,這應該與您上面的訪問量一致;然而,這並非總是如此,如果您在 Google Analytics 中有電子商務數據設置或目標,則可以輕鬆地將該信息疊加在地理位置數據上,以做出更明智的決定,或檢查存儲在您的電子商務平台數據庫中的位置信息。
提示 3 – 做快速延遲測試
有很多方便的免費工具可以用來測量您當前位置對於不同雲端提供商的延遲,這可以幫助您快速評估哪個區域可能是您網站的最佳選擇。
- GCP Ping (測量 Google Cloud Platform 區域,包括 Kinsta 伺服器的延遲)
- CloudPing.info (測量到 Amazon Web Services 區域的延遲)
- Azure延遲測試 (測量到 Azure 區域的延遲)
在下面的示例中,我們可以看到台灣 (asia-east1) 距離我們所在的位置最快,如果您要為整個美國的客戶提供服務,則最好選擇美國愛荷華州 (us-central1),以確保來自西海岸和東海岸的訪客的等待時間最短。
在 Kinsta 伺服器中,提供全球範圍內20個不同的數據中心,您可以輕鬆選擇同時具有低延遲和低 TTFB 的網站 ! 這也有助於減少網路 network hops。
減少延遲和 TTFB 的其他方法
除了選擇最近的伺服器的位置外,這裡還有其他幾種減少延遲的方法。
- 在您的 WordPress 網站上實施快取,在我們的測試中,快取將 TTFB 降低了 90% !
- 利用內容傳遞網路 (CDN) 為來自全球 POP 的快取資產提供服務,這有助於消除可能與您的主機伺服器不近的訪問者的網路延遲。
- 由於平行架構,可以利用 HTTP / 2 協議來最大程度地減少往返次數,在所有 Kinsta 伺服器上都啟用 HTTP / 2。
- 減少外部 HTTP 請求的數量,這些伺服器中的每一個都可以根據伺服器的位置添加自己的延遲。
- DNS 在 TTFB 中扮演著重要角色,因此您應該使用具有快速查詢時間的高級 DNS 提供商。
- 利用預取和預渲染在頁面加載時在後台執行任務。
不用擔心,我們將在這篇文章中進一步介紹上面提到的所有建議。
SFTP 速度和 WordPress 控制台速度
您的訪客和客戶應該始終是您的首要任務,但是許多人都忽略了這一部分,另一個方面是這一些因素是如何影響您的日常工作,您選擇的數據中心位置會影響 SFTP 下載和上傳的速度 (使用 FTP 客戶端傳輸文件) 以及 WordPress 控制台的響應速度。
因此,儘管您要確定並選擇最適合您的訪客的伺服器位置,但也要記住,它會影響網站管理,當您的網站託管主機在離您更近的數據中心中時,將文件上傳到 WordPress 媒體庫等任務將更快。
我們始終從 Kinsta 的客戶那裡得知,他們對他們的 WordPress 管理控制台的處理速度感到驚訝 ! 有許多因素會影響這一點,但是擁有 20 個不同的 Google 數據中心是一個很大的因素,選擇一個既適合您的訪客,也適合您的位置,畢竟,您可能是將要花費數千小時在網站上工作的人。
高級 DNS 比免費 DNS 更好
DNS (域名系統的縮寫) 這是網路環境中最常見但仍被誤解的工具之一,簡而言之,DNS 通過將域名與實際的 Web 伺服器連接來幫助引導 Internet 上的流量,從本質上講,它接受人性化的請求 (例如:wpowered.com 之類的域名),並將其轉換為計算機友好的伺服器 IP 地址 (例如:216.58.217.206)。
您可以找到免費 DNS 和高級 DNS,所有 Kinsta 客戶都可以通過 Amazon Route 53 訪問高級 DNS,通常,我們認為高級 DNS 在當今世界是必需的。
選擇優質 DNS 的一大原因是 速度和可靠性,查找 DNS 記錄和定向流量需要花費時間,即使只是幾毫秒。
通常,從域名註冊商那裡獲得的免費 DNS 相對較慢,而高級 DNS 通常可以提供更好的性能;例如:在我們的測試中,我們發現免費的 NameCheap DNS 比 Amazon Route 53 高級 DNS 慢 33%,此外,高級 DNS 可以提供更好的安全性和可用性,尤其是在遭受 DDoS 攻擊時。
您可以使用 SolveDNS 速度測試的工具來檢查 DNS 查詢時間,DNSPerf 還為所有頂級 DNS 提供商提供了出色的性能數據。
為了在您的域名註冊商提供的免費 DNS 與高級 DNS 之間取得良好的中間地帶,Cloudflare DNS 是一項免費服務,仍然提供高級 DNS 的許多好處,而且它們在全球範圍內的平均響應時間不到 20 毫秒 (見下圖),非常快速。
但是,Cloudflare 與許多其它 DNS 提供商相比,它還具有更多的停機時間,這是一個憂心的問題,如果您主要是為美國的訪客服務,那麼 DNS Made Easy 是您可能想要查看的另一家優質 DNS 提供商,他們以提供過去十年中最佳的 DNS 正常運行時間而聞名。
在最近 30 天內,DNSPerf 顯示這些提供商的以下正常運行時間:
- DNS Made Easy:99.99%,相當於 每月停機 4 分鐘 23 秒。
- Amazon Route 53:99.88%,相當於 每月停機 52 分鐘 35.7 秒。
- Cloudflare:99.85%,相當於 每月停機 1 小時 5 分鐘 44.6 秒。
停機時間對 DNS 提供商是否有多大的影響? 答案是肯定的,也可能不是。通常 DNS 使用 DNS 記錄上的生存時間 (TTL) 與 ISP 快取在一起,因此,如果 DNS 提供程序關閉了 10 分鐘,您很可能不會注意到任何事情;但是,如果 DNS 提供商持續出現較長且頻繁的中斷,或者您的 ISP 和 DNS 記錄都使用了非常低的 TTL 值,則停機時間就很重要。
您的 WordPress 佈景主題很重要
每個人都喜歡一個全新的 WordPress 主題,但是在使用所有新的閃亮功能之前,請務必小心,首先,您應該先閱讀 Kinsta 的關於免費主題與付費主題的區別的文章。在性能方面,主題中看到的每個元素都會對網站的整體速度產生一定的影響,不幸的是,成千上萬的主題氾濫成災,既有好的也有壞的。
那麼,您應該如何知道選擇哪一種佈景主題的呢? 我們建議使用以下兩個選項之一:
- 快速的輕量級 WordPress 佈景主題,僅包含您需要的功能,僅此而已。
- 功能更豐富的 WordPress 主題,但是您可以 禁用不需要的功能。
例如:Google Fonts、Font Awesome 圖標、滑塊、畫廊、影片和 parallax scripts 之類的功能,如果您的網站不需要使用它們,應該要關閉其中功能中的一部分。相反,您應該一開始或切換到一個輕量級的 WordPress 佈景主題。
以下是我們推薦的幾個 WordPress 主題,您一定會喜歡 ! ????
下面提到的每個佈景主題都與 WooCommerce 和 Easy Digital Downloads、WPML、BuddyPress、bbPress 完全相容,我們使用以下配置對每個佈景主題進行一些速度測試:
- 託管在 Kinsta 上,運行 WordPress 5.3.2 版本
- PHP 7.4 和 SSL (HTTPS)
- Kinsta CDN
- Shortpixel 用於自動壓縮圖片。
- 東京,日本數據中心 (asia-northeast1)
GeneratePress
GeneratePress 是一種快速、輕量級 (壓縮不到 1MB 文件) 的響應式 WordPress 主題,考慮了速度、SEO 和可用性;由加拿大開發人員 Tom Usborne 創建,它是積極更新和良好的支援,甚至有幾名 Kinsta 團隊成員也將 GeneratePress 用於他們的網站中。
有免費和高級付費版本,如果您查看 WordPress 佈景主題目錄,則免費版本目前有 200,000 多個安裝數,2 百萬次下載,以及令人印象深刻的 5 星 (滿分 5 星) 評分 (超過 942 人將其評為 5 星)。
GeneratePress 的妙處之一就是所有選項都使用本機 WordPress Customizer,這意味著您可以在按下發布按鈕之前立即看到所做的所有更改,這也意味著您不必學習新的主題控制面板。
到底有多快? 我們重新安裝了 GeneratePress,在 Pingdom 中運行了五次速度測試,並取了平均值,總加載時間為 121 ms,頁面總大小僅為 24.9 KB,進行基準測試以了解主題在原始性能方面的能力總是很好的。
第二次測試,我們使用 GeneratePress Site Library 中的一個預先構建的主題運行了測試,它包含圖片、背景等部分元素,GeneratePress 的優點之一是它具有許多不需要頁面編輯器外掛的預先構建的主題,您可以看到它總加載時間仍在 500 毫秒以下。
當然,在現實環境中,您可能需要運行其他功能,例如:Google Analytics、Facebook 像素、Hotjar 等等,但是,您應該能夠輕鬆地將目標定在 1 秒以內, 在 woorkup 上查看 GeneratePress 的深入評論。
我們將在下面向您展示更多優化和加速 WordPress 的方法。
OceanWP
OceanWP 佈景主題是輕量級和高度可擴展的主題,它使您能夠創建具有美觀和專業設計的幾乎所有類型的網站,例如:部落格、作品集、商業網站或 WooCommerce 電商網站,它由 Nicolas Lecocq 創建,也得到了積極的更新和良好的支援。
就像 GeneratePress 主題一樣,有免費和高級兩種版本,如果您查看 WordPress 佈景主題目錄,則免費版本目前有超過 40 萬次有效安裝,還有令人印象深刻 5 顆星評價 (超過 2,600 人將其評為 5 顆星)。
到底有多快? 我們全新安裝了 OceanWP,並在 Pingdom 中進行了五次速度測試,並取了平均值,總加載時間為 319 ms,頁面總大小僅為 244.5 KB,OceanWP 中的 scripts 稍大一些,但不影響整體效能。
然後,我們使用 OceanWP 網站庫中的一個 DEMO 主題運行了另一組測試,它包含圖片、背景以及必需的 Elementor 編輯器外掛,您可以看到它的總加載時間仍在 1000 毫秒左右。
Astra
Astra 是一種快速、完全可自訂且美觀的佈景主題,適用於部落格、作品集、商業網站和 WooCommerce 電商網站,它非常輕巧 (前端少於 50 KB),並提供無與倫比的速度,它由 Brainstorm Force 的團隊創建,並得到了積極的更新和良好的支持,您可能會認識到他們是流行的 All In One Schema Rich Snippets 外掛的創建者,這個外掛插件已經存在了很多年。
就像 GeneratePress 和 OceanWP 一樣,有免費和高級版本兩種,如果您查看 WordPress 佈景主題目錄 ,則免費版本當前有 40 萬活躍安裝,160 萬下載次數,以及令人印象深刻 5 顆星評價 (超過 2500 人將其評為5顆星)。
到底有多快? 我們全新安裝了 Astra,並在 Pingdom 中進行了五次速度測試,並取了平均值,總加載時間為 137 毫秒,頁面總大小僅為 36.5 KB。
然後我們使用 Astra Starter 套件網站庫中的一個 DEMO 主題運行了另一組測試,它包含圖片、背景以及必需的 Elementor 編輯器外掛,您可以看總下載時間仍在 400 毫秒以下;注意:此 DEMO 中的圖片已經過 Shortpixel 外掛壓縮。
很重要的一個觀點,我們不能完全盡信這三個主題的速度測試之間數據,問題在於,幾乎不可能進行完全準確的比較,但是,我們想向您表達的一件重要的事,所有這些 WordPress 主題都在快速發展 ! ????
關於頁面編輯器的注意事項
您可能已經註意到 OceanWP 和 Astra 都需要頁面編輯器才能使用其網站庫的主題,使用頁面編輯器外掛時,請注意以下幾點:
- 某些頁面編輯器可能會增加您網站上的加載時間,這是因為他們必須加載其他 CSS 和 JS 才能使您的工作無需代碼,我們始終建議您在安裝頁面編輯器之後都需要優化您的 WordPress 網站。
- 您正在將自己提交並鎖定到該頁面編輯器中進行設計,確保定期更新頁面編輯器外掛。
話雖如此,我們仍然是 Elementor 和 Beaver Builder 等頁面編輯器的忠實擁護者,在大多數情況下,它們在開發時都考慮到了性能,只增加了一點點負載,對於大多數人來說,功能和可用性是值得的,因為這些外掛使您可以創建自己夢寐以求的網站 ! 在某些情況下,它們可能還會更快,因為它們可能替代了您其他使用的多個外掛。
如果您不需要頁面編輯器外掛,則只需安裝一個外掛,看看新的 Gutenberg editor 在未來幾年將如何在站點設計中發揮作用也將很有趣。
低品質 WordPress 外掛
有關於 WordPress 外掛的資訊,您可能已經閱讀很多的文章,告知不要安裝太多外掛,否則會降低 WordPress 網站的運行速度;儘管有時是正確的,但這不是最關鍵的因素。
外掛的數量並不像外掛的品質那麼重要。????
就像佈景主題一樣,重要的是外掛的開發方式以及構建時是否考慮到性能,我們在 Kinsta 主機上有許多運行 30 – 40 個外掛的客戶,他們的網站仍然可以在一秒鐘之內加載完成。
雖然將代碼方式添加到您的網站是一個很好的方式,但是由於以下原因,這並不總是可行的:
- 您必須自己維護代碼,並隨著標準的更改而不斷更新,人們總是忙碌的,為什麼不依靠比大多數人都了解標準的出色外掛開發商呢?
- 在大多數情況下,一個編碼良好的外掛不會帶來比代碼本身更多的問題。
- 您必須記住,大多數 WordPress 社區並不像開發人員那樣精通技術,外掛是有助於解決問題的解決方案。
話雖說如此,當然沒有那麼多理由想要遠離優秀外掛,相信我們,Kinsta 看到了最糟糕的外掛經歷,在 Kinsta 禁止使用許多 (並非全部) 外掛,這些都是直接導致性能問題的外掛。
Francesco 在一篇有趣的文章中,他深入研究了 WordPress外掛的負載測試,以了解它們在 WordPress 網站後端的性能,在大多數情況下,後端均未快取,我們將在下面進一步介紹如何在您的網站上找到錯誤的外掛。
但是,人們對 WordPress 的喜愛的原因之一,就是其龐大的第三方外掛庫,這是不容忽視的,但在 WordPress.org 上列出了 56,000 多個免費外掛,而在其他地方列出了數千個免費外掛,很難找到您需要的一個外掛,有如大海撈針 !
可以參考 Kinsta 僅列出市場上 最好的WordPress 外掛列表。
我們僅嘗試分享我們每天使用的東西,就像其他人一樣在我們的網站上使用 WordPress 外掛,Kinsta 的許多團隊成員甚至開發和銷售外掛。
WordPress 外掛的一個大問題
WordPress 外掛的另一個大問題是 解除安裝過程,每當您安裝 WordPress 外掛或主題時,它都會將數據存儲在資料庫中,問題是,當您使用一種標準方法刪除外掛時,它通常會在資料庫中留下表格和行,隨著時間的流逝,這可能會增加大量數據,甚至開始減慢您的網站速度。
在我們的示例中,我們解除安裝了 Wordfence security 安全性外掛,該外掛在資料庫中保留了 24 個表 (如下所示),非常糟糕是它們殘留於 wp_options 表中的數據。
除了資料庫之外,許多外掛還留下了其他資料夾和文件,根據我們的經驗,這在安全性和快取外掛中很常見,這些外掛在其他目錄創建了用於日誌記錄,例如:刪除 Wordfence 外掛後,在 wp-content 目錄中會殘留下一個「wflogs」資料夾,市場上的大多數外掛和佈景主題都普遍有這種情形。
開發人員為什麼要這麼做?
因此,您可能想知道,為什麼在解除安裝和刪除外掛時,開發人員沒有設置自動清除的選項? 好吧,他們是可以做到了,但是,有兩個原因可能導致他們可能並不想這麼做。
- 他們想保留用戶的設置:如果您暫時刪除 WordPress 外掛並決定稍後再試用,則所有設置和數據仍將存在,雖然這非常方便,但這不是最有效的方法。
- 他們不在乎性能:一些開發人員可能會爭辯說,將表留在資料庫裡並不會影響性能,但是您想像一下,十年來使用過了數百個外掛的網站已經生成了數千行的表格,資料庫查詢會對您的 WordPress 網站的性能產生重大影響, 如果開發人員不小心,外掛會提出很多另外的請求;通常,編寫良好的外掛只應該查詢與其綁定的表或行,但是,並非總是如此,我們親眼目睹了這一點,資料庫長時間的查詢這些殘留的 wp_options表中不必要的自動加載數據。
- 他們犯了一個錯誤:WordPress 外掛手冊中明確的說:「經驗不足的開發人員有時會為此目的而錯誤地停用 hook。」
好消息? 有一些方法可以正確清理和刪除外掛。???? 查看 Kinsta 的以下教學:
WordPress 優化設定
現在說明 WordPress 優化設置,您可以進行一些更改來設定幫助加快 WordPress 網站的速度,其中許多都是非常微妙的變化,但一切都會有所幫助 !
更改您的 WordPress 登入網址
預設情況下,您的 WordPress 網站的登入網址為 domain.com/wp-admin/,問題之一是所有的機器人、駭客都知道這一點,通過更改後台網址,您可以減少後台的攻擊,更好的保護自己免受暴力攻擊,並減少網路機器人重複訪問此網址而佔用頻寬。
更改 WordPress 登入網址還可以幫助防止常見錯誤,例如:429 Too Many Requests,這不是絕對的解決方法,但它只是一個小竅門,可以幫助保護您並減少該頁面上的負載。
要更改您的 WordPress 登入網址,我們建議使用以下外掛:
- WPS Hide Login (免費)
- Perfmatters ( 高級付費,但包括其他性能優化設置,由 Kinsta 的團隊開發 )
禁用佈景主題或外掛檢查更新
緩慢的 WordPress 控制台可能會受到網路、數據中心位置甚至 PHP 版本的影響,但是沒有很多人談論這個問題,另一個因素是在後台運行的 WordPress 更新檢查器,這是一個實例,其中包含許多 WordPress 外掛和佈景主題可能會造成緩慢。
WeFoster 在這方面有一篇很棒的部落格文章,其中他們用「第三方外掛禁用更新檢」及告訴您甚麼是 TPPUCS。
本質上,問題在於 WordPress 的核心程式更新檢查器在後台對外部第三方 (https://third-party-plugin/update-check.php) 發出 GET 請求,有時這可能是周期性的或非常頻繁的,如果它一直在發出請求,這可能會使您的控制台速度緩慢。
這與 WordPress 中的更新檢查器的架構方式有關,如果您遇到 WordPress 控制台加載速度慢的問題,則可能需要嘗試優化一下,補救措施是禁用自動更新。警告:這僅當您打算手動檢查更新時才這樣做,許多更新包括安全性和錯誤修復。
要禁用更新,我們建議使用以下外掛:
- Disable All WordPress Updates:完全免費,無需任何設置。
- Easy Updates Manager:提供選擇性更新的更多控制,基本版本是免費的。
您可以輕鬆地為自己設置日期提醒,每週禁用外掛一次、檢查更新,然後重新啟用外掛。
禁用 Pingbacks
Pingbacks 是部落格中用來通知其他部落格系統文章被引用情況的一種手段,當您連接到您自己的部落格中的文章時,也可能會創建自我回應。
我們建議您禁用這個功能,因為它們會在您的網站上生成毫無價值的查詢和其他垃圾郵件,請記住 WordPress 網站的通信次數越少越好,尤其是在高流量網站上,更不用說在您自己的網站上進行 pinging 令人討厭的事,請按照以下步驟禁用 pingback。
步驟 1 – 禁用其他網站 Pingbacks
在 WordPress 控制台中,單擊「設定 → 討論」,在「討論設定」選項下,取消選中「開放其他網站對新文章傳送連結通知 (即自動引用通知及引用通知)」。
步驟 2 – 禁用 Self-Pingbacks
當要禁用 Self-Pingback,您有兩種選擇,您可以使用免費的 No Self Pings 外掛,或者您可以使用高級外掛 (如 Perfmatters)。
另外,您還可以通過將以下代碼添加到 WordPress 主題 functions.php 文件中來禁用 self-pingbacks。
提示:您可以使用免費的 Code Snippets 外掛 輕鬆添加這樣的 PHP 代碼,這意味著您無需修改到主題文件。
function wpsites_disable_self_pingbacks( &$links ) {
foreach ( $links as $l => $link )
if ( 0 === strpos( $link, get_option( 'home' ) ) )
unset($links[$l]);
}
add_action( 'pre_ping', 'wpsites_disable_self_pingbacks' );
Code language: PHP (php)
限制部落格中 Feed 的文章
無論您的部落格的文章是設置在首頁還是網站的其它頁面,都不需要同時加載 50 個略圖,對於那些運行高流量部落格的網站,您的首頁是網站上最重要的頁面,您希望此頁面能夠快速加載,請求和圖片越少、性能越好。
同理,這正是使用分頁的原因 (如下所示),分頁是在部落格摘要的末尾看到的內容,它使您可以瀏覽到下一頁,通常這些是數字或者它們可能使用「下一頁 / 上一頁」文章,您的 WordPress 主題很可能已經內置了自定義的分頁方式。
預設情況下,新安裝的 WordPress 將文章限制設定為 10 篇,但經過多次的修改佈景主題,很可能我們已經失去了計數,因此,請務必仔細檢查您使用的值;我們建議您在 8 到 12 之間的篇數。
您可以在 WordPress 控制台的「設置 → 閱讀」下找到此選項,然後,您可以更改「網站文章頁面每頁文章顯示數量。」
為什麼快取如此重要
到目前為止,快取是提高 WordPress 速度最重要、最簡單的方法之一 ! 但是在向您說明如何使用快取之前,首先必須了解它的工作方式以及可用的各種快取方式。
什麼是快取?
簡單來說,在您的 WordPress 網站上的訪問,每個網頁都需要向伺服器發出請求,並由該伺服器進行處理 (包括資料庫查詢),然後將最終結果從伺服器發送至讀者的瀏覽器上,「最終結果」就是您的網頁所包含的原來文件和元素。
例如:您可能具有標題、圖片、選單和文章,由於伺服器必須處理所有這些請求,因此需要花費一些時間才能將這些完整的網頁發送給讀者,尤其是對於臃腫或大型的網站。
這就是 WordPress 快取外掛發揮作用的地方 ! 快取的動作指示伺服器將一些文件存儲到硬碟或記憶體中,具體取決於您的伺服器的配置。
因此,它可以記住並複製過去一直提供的相同內容,基本上,它減少了生成頁面視圖所需的工作量,結果,您的網頁直接從快取文件中加載,更快速的交付給讀者。
快取的其他好處包括:
- 您的伺服器使用的資源更少 – 這與速度聯繫在一起,因為更少的資源可以使網站更快,這也減輕了伺服器的負載,當涉及到高度動態的網站 (例如:會員、論壇網站) 請確定您可以提供快取或不能提供快取服務時,這非常重要。
- 你會看到更低的 TTFB – 快取是降低你的 TTFB 最簡單的方法之一,實際上,在我們的測試中,快取通常最多可將 TTFB 降低 90%。
快取類型
當提到到快取類型時,通常使用兩種不同的方法:
在伺服器級別快取
到目前為止,在伺服器中進行快取是對用戶最簡單的方法之一,這意味著 WordPress 主機商會為您處理快取問題,在 Kinsta 伺服器利用以下 四種類型的快取,它們都是在程式或伺服器中自動完成的:
- PHP 代碼快取
- 對象快取 (Object cache)
- 頁面快取
- CDN 快取
這意味著使用 Kinsta 主機,您無需擔心與任何復雜而令人困惑的快取外掛混為一談,您可以停止使用所謂最佳、最流行的快取外掛,而將精力集中在更俱生產力的工作。????
頁面緩存被配置為與標準WordPress即開即用。您不必做任何事!只需啟動您的WordPress網站,頁面緩存就會開始發生。
Kinsta 還為 WooCommerce 和 Easy Digital Downloads 等電子商務網站制定了快取規則,預設情況下,某些永遠不應該快取的頁面 (例如:購物車、我的帳號和結帳頁) 將從快取中排除,用戶在檢測到 woocommerce_items_in_cart Cookie 或 edd_items_in_cart 時會自動繞過快取,以確保順利進行同步的結帳流程。
您可以隨時通過控制台管理工具欄輕鬆清除 WordPress 網站的快取。
也可以在 Kinsta 的 MyKinsta 控制台中,只需點擊「Tools」,然後點擊「Clear Cache」。
用快取外掛
如果託管網站服務的主機商不提供快取機制,則可以使用第三方 WordPress 快取外掛,根據我們的經驗,我們推薦以下方法:
- WP Racket (高級付費)
- Cache Enabler (免費)
- W3 Total Cache (免費)
Kinsta 主機也完全與 WP Rocket 快取外掛相容 ! Kinsta 通常不允許在他們的環境中使用快取外掛,因為這些快取外掛與 Kinsta 的內置快取機制互相衝突,但是,從 WP Rocket 3.0 版本開始,在 Kinsta 主機上運行時,將自動禁用其頁面快取功能,其它的功能不影響。
這使 Kinsta 客戶可以使用他們的快速伺服器級的快取,但仍可以利用 WP Rocket 提供的出色的優化功能。
沒有快取與有快取的差別
快取對網站有多少幫助? 證明在以下測試裡。
我們使用 Kinsta 的伺服器級的快取進行了一些速度測試,因此您可以看到它在整體速度和 TTFB 方面帶來的不同。
沒有快取
我們首先在 Pingdom 上運行了五次未啟用快取的測試,並取了平均值。
沒有快取的 TTFB
注意:沒有快取和有快取的 TTFB 的區別也很重要,Pingdom 中的 TTFB 由黃色的「Wait」欄顯示,沒有快取的 TTFB 為 192 ms,您可以看到,由於 x-kinsta-cache 標頭顯示了 MISS ,因此它不在快取的狀態中。
啟用快取
然後,我們啟用了伺服器級的快取模式,並在 Pingdom 上運行了五個測試並取了平均值。
如圖所示,伺服器級快取使我們的頁面加載時間減少了 33.77% ! 無需任何額外的優化,這個網站在測試前也經過了相當優化,因此,較大型的未優化網站會有更大的差異性。
啟用快取的 TTFB
現在,我們看一下啟用了快取的 TTFB,我們可以看到它不到 35 ms,您可以看到它在快取中提供服務,因為 x-kinsta-cache 標題顯示的是 HIT。
CDN 快取與 WordPress 主機的快取同樣重要,我們將在下面進一步介紹 CDN。
快取和會員社區網站的問題
會員社區網站包含許多 不可快取的內容 和頁面,這些內容和頁面不斷變化,諸如會員的登入頁面 (可能會因網站的大小而不斷受到影響),電商商品或課程的結帳頁面以及討論區等是常見的罪魁禍首和痛點,因為這些頁面通常無法快取。
但是,它並不止於此,在標準 WordPress 網站上,WordPress 控制台也不會為「已登入」的用戶快取,當您只有幾個作者和管理員時,不會有甚麼感覺,但是當您突然有成千上萬的成員使用控制台時,這立即會導致網站性能問題,因為它們都無法獲得伺服器的快取服務,這意味著您需要強有力的伺服器的效能和架構,在這種情況下,共享主機 (虛擬主機) 主機商通常會讓網站癱瘓。
高動態網站的對象快取 (Object Caching)
當談論到 WordPress 會員網站時,通常只靠快取設置是不夠的,因為它們並不總是可以充分利用它,這就是 對象快取 (Object Caching) 起作用的時候。
對象高速快取 (Object Caching) 存儲資料庫查詢的結果,以便下次需要特定數據位時,可以從高速快取中傳遞該數據而無需再一次查詢資料庫,這樣可以加快 PHP 執行時間,並減少資料庫負載,這對於會員網站變得極為重要 ! 使用 WordPress,您可以通過三種不同的方式實現對象快取:
- 第三方快取解決方案,例如:W3 Total Cache
- Redis (推薦)
- Memcached
Kinsta 提供 Redis 作為附加選項,因此您可以充分利用會員網站的持久對象快取。
分析快取
還記得 x-kinsta-cache 我們上述提到的標頭嗎? 根據您的網站託管服務主機商或快取解決方案,標頭的名稱可能有所不同,每次從 WordPress 網站發出請求時,標頭都有一個值,例如:HIT、BYPASS、MISS 和 EXPIRED,這些標頭使您可以查看快取的狀態。
增加 WordPress 網站的快取命中率很重要,因為您希望網站盡可能由快取提供服務,在 Kinsta 平台上,您可以在 MyKinsta分析工具和 kinsta 日誌中分析數據,可以了解網站是否有快取命中、BYPASS、GET 請求或 POST 請求。
快取組成統計 (如下所示) 您可以查看每個請求的狀態,無論是 HIT、BYPASS、MISS 還是 EXPIRED,您可以查看過去 24 小時、7 天或 30 天的數據。
快取組成統計圖使您可以大致了解快取率,快取提供的請求越多越好,正如您在以下圖示中看到的那樣,此 WordPress 網站的 HIT 快取比率為 96.2%。
使您可以查看哪些請求未快取而繞過快取 (bypasses) 部分,通常,這些可能包括 CRON 作業、管理 ajax 請求、電子商務結帳頁面、查詢字符串和 UTM 參數等。
圖片優化是必須的
圖片優化是您可以做的另一件簡單的事情,它對整體頁面加載時間有重大影響,這不是選項,而是每個網站都應該這樣做 !
大圖片會降低您的網頁速度,從而帶給用戶不理想的體驗,優化圖片是使用外掛或程式碼來減小其文件大小的過程,從而可以加快頁面的加載時間,有破壞性和無破壞性壓縮是常用的兩種方法。
根據 HTTP Archive 的數據,截至 2020 年 1 月,圖片平均佔網頁總體積的 26.8%,因此,在難以優化的影片之後,到目前為止,圖片是您應該首先開始的 ! 它比 JavaScript、CSS 和 Fonts 更重要,具有諷刺意味的是,良好的圖片優化工作是最容易實現的事情之一,但是許多網站所有者卻忽略了這一點。
從最早的數據來比較,整個網路似乎在圖片優化方面越來越好 ! 但是 26.8% 仍然是一個不容忽視的數字,如果您的網站上沒有任何影片內容,則圖片可能仍然是頁面總大小的痛點。
尋找平衡 (文件大小和品質)
重新編排格式圖片的主要目標是 在最小文件大小和可接受的品質之間 找到平衡,執行幾乎所有這些優化的方法不只一種,最基本的方法之一是在將它們上傳到 WordPress 之前對其進行壓縮;通常,這可以在 Adobe Photoshop 或 Affinity Photo 之類的工具中完成,或使用 Google 提供的在線 Squoosh應用程式 。但是,這些動作也可以使用外掛自動執行,我們將在下面進行介紹。
要考慮的兩個主要事項是 圖片格式 和使用的 壓縮類型,通過選擇圖片格式和壓縮類型的正確組合,您可以將圖片大小減少多達 5 倍,您必須嘗試每種圖片格式,以查看最有效的方法。
在開始修壓縮圖片之前,請確保選擇了最佳圖片類型,您可以使用幾種類型的圖片:
- PNG –產生更高品質的圖片,但圖片尺寸也更大,創建為無破壞圖片格式,儘管它也可能是有破壞的。
- JPEG –使用破壞性壓縮,您可以調整品質級別,以在品質和圖片大小之間取得良好的平衡。
理想情況下,對於色彩豐富的圖片,應使用 JPEG (或 JPG),對於簡單圖片,應使用 PNG。
GIF 呢? 動畫 GIF 總是很有趣,但它們會破壞 Web 性能,許多 GIF 圖片超過 1MB,我們建議您這些圖片用於社交媒體和 Slack,如果您的部落格文章中使用 GIF 圖片,請看一下如何壓縮 GIF 圖片。
壓縮品質與尺寸
這是過度壓縮圖片會發生什麼的範例,第一張圖片使用未經壓縮的原始圖片 ( 注意:未壓縮的原始圖片為 1.26MB ),第二張圖片是使用中等的壓縮率,圖片文件大小為 146 KB。
我們以中等壓縮率壓縮圖片,如下圖所示,圖片品質看起來不錯,文件大小為 146 KB,對於高解析度檢視圖片是可以接受的,我們建議將大多數圖片保持在 100 KB 上下,以獲取最佳性能。
失真與無失真圖片壓縮優化
同樣重要的是要了解,可以使用兩種壓縮類型:失真壓縮和無失真壓縮。
失真壓縮涉及消除圖片中的某些數據,因此,這意味著您可能會看到品質降低 (品質降低或有些稱之為減少 Pixel),因此,您必須謹慎減少 Pixel 的程度,不可破壞太多的圖片品質,當然,失真壓縮的一大優點是可以使圖片文件大小減少很多,所以這種壓方式也是現在受歡迎的原因之一。
與失真壓縮不同的無失真壓縮 (PNG) 不會降低圖便品質。
這怎麼可能呢?
通常是刪除不必要的資料數據 (由獲取圖片的相機設備自動生成的數據) 來完成的,但是,此方法的最大缺點是您 不會看到文件大小有顯著減小,換句話說,圖片文件的大小還是佔用大量硬碟空間。
您將想選用哪一種壓縮方式最適合您,但是對於大多數用戶,我們建議使用有失真壓縮 (JPG),因為您可以輕鬆地將圖片壓縮超過 70% (有時甚至超過 90% ! )而不會造成品質損失。
如果將上面的範例圖片產生 15 張的縮圖圖片,它將在減少網站的加載時間方面發揮重要作用。
圖片壓縮外掛
好消息是,您可以使用一些驚人的 WordPress 圖片壓縮外掛來自動壓縮整個過程,以下是我們推薦的一些外掛:
- Imagify (失真和無失真壓縮 – 遠端圖片優化)
- WP Smush ( 失真和無失真壓縮 – 遠端圖片優化 )
- Optimole ( 失真和無失真壓縮 – 遠端圖片優化 )
- EWWW Cloud ( 失真和無失真壓縮 – 遠端圖片優化 )
- ShortPixel ( 失真和無失真壓縮 – 遠端圖片優化 )
選擇圖片優化外掛時,最重要的事情是選擇一個可在遠端伺服器上壓縮和優化圖片的外掛,反過來說,這會減少了您的網站對伺服器的的負載,上面所介紹的外掛,都是這樣做的。
如果您感到好奇,可以在 WooWP 主機的網站上使用 Imagify 外掛,當我們將圖片上傳到 WordPress 媒體庫時,它會自動壓縮圖片,因此,我們不必擔心任何事情,隨著時間的過去,您會看到要使用的圖片的壓縮級別,它提供 Normal、Aggressive 和 Ultra 三種。
我們在 WooWP 使用 Aggressive 模式 ,根據圖片大小通常可以節省 60-70%。
如果使用圖片壓縮,您的 WordPress 網站會快多少?
這完全取決於原始圖片的大小以及壓縮後的圖片大小,我們進行了一些速度測試,發現優質的圖片壓縮解決方案可以將頁面加載時間減少 80% 以上 !
其他圖片優化技巧
以下是一些圖片優化技巧,您可以參考使用。
- 上傳大小僅為列 ( column ) 或 DIV 寬度的圖片的日子已經過去,響應式 (RWD) 圖片在 WordPress (自 4.4 版開始) 中是開箱即用的,並且會自動向行動用戶顯示較小的圖片尺寸。
- SVG 可能是使用圖片的另一種絕佳選擇,您在 WooWP 網站上看到的手繪插圖都是 SVG (向量),SVG 的文件大小通常要小得很多。
- 使用圖示 (icon) 代替在圖片放置在文字中,適當調整大小後它們看起來更美觀,佔用的空間更少。
微調您的資料庫
接下來是有關如何微調 WordPress 資料庫的一些技巧,就像汽車一樣,您的資料庫需要維護,隨著使用時間的增長,資料庫可能會變得臃腫。
會員網站尤其棘手,因為它們通常會產生更複雜的查詢,從而在從 MySQL 資料庫擷取資訊文件時又增加了額外的延遲,這在很大程度上歸因於所有這些額外的活動組件和大量數據網站,這也可能是由高度依賴導覽列進行搜尋查詢或使用 WP_Query 引起的。
更不用說,您還有大量同時間會員不斷查詢資料庫。
使用 InnoDB MySQL 存儲引擎
許多較舊的網站仍在其資料庫中使用 MyISAM 存儲引擎,近年來 InnoDB 已表現出更好的性能和更高的可靠性。
與 MyISAM 相比,InnoDB 有兩個優點:
- InnoDB 具有資料列層級鎖定。MyISAM 僅具有完整的資料表層級鎖定,這樣可以使查詢處理更快。
- InnoDB 具有所謂的參考完整性,其中涉及支援外部索引鍵 (RDBMS) 和關聯性限制,而 MyISAM 沒有 (DMBS)。
- InnoDB 支持 transactions (交易數),這意味著您可以提交和復原,MyISAM 沒有。
- InnoDB 更可靠,因為它使用 transactional Log (交易紀錄) 進行自動復原。MyISAM 沒有。
所以現在您可能想知道,您正在運行 InnoDB 還是 MyISAM ? 如果您在一個相當新的 WordPress 網站上運行,則您已經在使用 InnoDB MySQL 存儲引擎;但是對於較舊的 WordPress 網站,您可能需要快速檢查,某些網站甚至可能混合和匹配了 MyISAM 和 InnoDB 資料表,將它們全部轉換為 InnoDB,您可以看到其中的改進。
請按照以下這些簡單步驟進行檢查。
步驟 1
登錄到 phpMyAdmin 並按一下您的 MySQL 資料庫。
步驟 2
快速掃描或對「類型」進行重新排序,您可以看到表正在使用的存儲引擎類型,在下面的範例中,您可以看到其中兩個資料表仍在使用 MyISAM。
如果找到了,那麼您可以將它轉換成 InnoDB,我們建議與您的網站開發人員聯繫,並詢問他們是否可以為您轉換為 InnoDB 儲存引擎。
或者,您可以按照以下這些教學 MyISAM 資料表手動轉換為 InnoDB:
刪除和限制頁面和文章修訂
每當您在 WordPress 中儲存頁面或文章時,它都會創建所謂的 修訂版本,在草稿和已發布或的已更新文章中都會發生這種情況,如果您需要還原到先前版本的內容,則修訂版本會很有幫助。
但是,修訂版本也會傷害 WordPress 網站的性能,在大型網站上,這可以非常迅速的寫入到資料庫中,而不一定是需要的數據,而且,行數越多,資料庫的資料就越大,這將佔用存儲空間,雖然為此目的創建了索引,但我們仍然看到此問題會使 WordPress 網站癱瘓,您可以做幾件事。
- 刪除舊版本
如果您的舊 WordPress 網站上有很多頁面和文章,那麼可能是時候進行快速清理並刪除這些舊的修訂版本了,您可以使用 MySQL 來做到這一點,但是由於網路上流傳不良的錯誤代碼教學,我們建議對您的網站進行備份,並使用 WP-Sweep 之類的免費外掛來刪除。
也可以使用另一個外掛 WP Rocket 也具有資料庫優化功能以清除修訂版本。
如果您會使用 WP-CLI,則可以使用幾個命令。
通過 SSH 登入到伺服器並執行以下指令,以查看資料庫中當前的修訂版本數量。
cd public
wp revisions list
Code language: PHP (php)
如果出現錯誤, 則請先執行以下指令安裝 wp-revisions-cli 套件:
wp package install trepmal/wp-revisions-cli
然後,執行以下指令來清理修訂版本:
wp revisions clean
- 限制修訂版本
我們在 WooWP 使用的另一個好的策略是 限制 每篇文章或頁面可以存儲的修訂數量,即使將其設置為大約 10,也不會使修訂版本變得一發不可收拾,尤其是在進行大量更新文章的情況下。
要限制修訂,您可以將以下代碼寫入到 wp-config.php 文件中,需要將以下代碼插入「 ABSPATH」上方,否則將無法正常工作,您可以將數字更改為要保留在數據庫中的任何修訂版本。
define('WP_POST_REVISIONS', 10);
Code language: JavaScript (javascript)
或者,您可以使用 Perfmatters 之類的外掛來限制修訂版本。
- 停用修訂版本
最後但並非最不重要的一點是,您還可以完全 停用 網站上的修訂版本,如果您要採用這種方式,我們強烈建議您遵循上面的第一個選項刪除修訂版本後,然後再停用它們,這樣,您的資料庫完全不受所有舊修訂版本的限制,以後也不會增加任何新修訂版本。
要停用修訂版本,可以將以下代碼寫入到 wp-config.php 文件中,需要將以下代碼插入「 ABSPATH」上方,否則將無法正常工作。
define('WP_POST_REVISIONS', false);
Code language: JavaScript (javascript)
或者,您可以使用 Perfmatters 之類的外掛來停用修訂版本。
清理您的 wp_options 表和自動載入的數據
在 wp_options 整體 WordPress 和資料庫性能方面,該資料表經常被忽略,特別是在較舊的大型網站上,由於第三方外掛和佈景主題遺留的自動載入數據,很容易導致網站上查詢時間緩慢,相信我們,我們常常遇見這種網站 !
wp_options 資料表包含您的 WordPress 網站的各種數據,例如:
- Site 網址和 home 網址、管理員電子郵件、預設類別、文章數量、時間格式等等
- 外掛、佈景主題、小部件的設定
- 臨時快取的數據
該表包含以下欄位 (columns):
- option_id
- option_name
- option_value
- 自動載入 (這是我們關心的效能)
關於 wp_options 資料表,要了解的重要內容之一是 自動載入 欄位,它包含是 (yes) 或否 (no) 值 (標幟),這實質上控制了 wp_load_alloptions() 函數是否載入它,自動載入的數據是在 WordPress 網站的 每個頁面上 載入的數據;就像我們向您展示如何「禁止某些指令碼」在網站範圍內載入一樣,此處也適用相同的想法。
對於開發人員來說,預設情況下 autoload 屬性設定為「yes」,但理論上並非每個外掛都應該在每個頁面上載入其數據。
當 wp_options 資料表中有大量自動載入的數據時,WordPress 網站可能會遇到的問題。這通常是由於以下原因造成的:
- 數據應設置為「no」時由外掛自動載入。一個很好的例子,就是聯絡表外掛,是否需要在每個頁面或只有在聯絡表頁面上載入數據 ?
- 外掛或佈景主題已經 WordPress 網站中移除,但它們的 options 仍留在 wp_options 資料表中,這會將在每個請求查詢中,自動載入不必要的數據。
- 外掛和佈景主題的開發人員正在將數據載入到 wp_options 資料表中,而不是用自己創建的資料表,雙方都有說詞;因為某些外掛開發人員不喜歡創建其他需求的資料表。但是 wp_options 資料表也不是為了可以容納數千行而設計的。
自動載入的數據有多少 ? 這可能會有所不同,但是理想情況下,希望此大小介於 300 KB 到 1MB 之間,一旦您開始達到 3-5 MB 或更大的範圍後,最好可以能優化或從自動載入中刪除內容,超過 10 MB 以上的任何內容都應立即處理。
因為這是一個問題,所以 Kinsta 有一個完整教學,您將需要閱讀如何對「最佳化自動載入的數據和進行故障排除」。
清除 Transients
除非您使用物件快取 ( object cache ),否則 WordPress 將臨時記錄存儲在 wp_options 資料表中,正常情況下,這些設置有到期時間,應隨到期時間而消失,但是,並非總是如此。我們曾經看到一些資料庫,其中有成千上萬的舊 transient 記錄。
還必須注意,預設情況下不會自動載入 transients。您可以使用下面的查詢來查看是否有任何自動載入的 transients 數據。
SELECT *
FROM `wp_options`
WHERE `autoload` = 'yes'
AND `option_name` LIKE '%transient%'
Code language: JavaScript (javascript)
更安全的作法是利用免費的外掛,如 Transient Cleaner 或 Delete Expired Transients,它們只能清除 wp_options 資料表中的過期的 transients。但是,從 4.9 版本開始 Transients 已成為 WordPress 核心的一部分, 因此除非您有特殊需要,否則無需手動清除它們。
WP Rocket 還具有清理 transients 其資料庫優化的功能。
三種類型的 Transients:
- 過期的 Transients:是過期的 transients 並且仍然存在於資料庫中,這些可以安全的清除。
- 具有到期時間的 Transients:仍是有效的 transients,並已被核心 / 外掛 / 佈景主題所使用,除非您知道自己在做什麼,否則不要清除它們 !
- 還沒有到期的 Transients:仍然有效但還沒有到期日期的 transients,請保留它也不應清除 !
清除 WordPress Sessions
我們看到的另一個常見問題是,有時 cron 作業不同步或無法正確啟動,因此無法清理 sessions,您可以在資料庫查詢 _wp_session 看到大量的列 (rows)。
在一個有問題的網站下,wp_options 資料表內超過 300萬列 (rows),該資料表的大小已增長到 600 MB 以上。
您可以使用以下的查詢來查看是否遇到此問題:
SELECT *
FROM `wp_options`
WHERE `option_name` LIKE '_wp_session_%'
Code language: JavaScript (javascript)
在正常情況下,您可以使用以下指令安全刪除這些文件:
DELETE FROM `wp_options`
WHERE `option_name` LIKE '_wp_session_%'
Code language: JavaScript (javascript)
為自動載入加上索引
如果覺得清理 wp_options 資料表還不夠,您可以嘗試在自動載入欄位中增加一個「索引 ( index )」,這本質上可以幫助它更有效的被搜尋,10up 的專業團隊在 wp_options 中執行了一些自動載入測試方案,顯示 wp_options 查詢以增加自動載入索引如何提高性能。
我們還建議您從 WP Bullet 中查看以下兩個額外教學:
Redis 作為 WordPress 的永久性物件快取
Redis 是一個開源的資料結構的快取存儲方式,在 WordPress 的內容中,可以使用 Redis 永久性存儲 WordPress 的原生物件快取生成的值,以便可以在頁面載入之間重複使用物件快取。
使用持久物件快取 (例如:Redis) 可以 重複使用物件快取, 而無需要求再查詢同一個物件的 MySQL 資料庫,結果是 Redis 可以減少網站的 MySQL 資料庫的負載,同時減少網站的回應時間,並提高網站效能並可以處理更多流量的能力。
無法充分使用的 頁面快取 的高度動態的網站 (WooCommerce、會員網站、論壇、討論區及非常活躍的評論系統網站) 是持久物件快取的選項,Redis 是最佳的候選者。
如果您是 WooWP 的客戶,我們會提供 Redis 附加元件 (了解如何新增 Redis 計劃)。
WordPress 使用 Elasticsearch 加快搜尋
Elasticsearch 是一個開源的全文本搜尋引擎,它用於索引數據和快速地搜尋數據。
在 WordPress 的內容中,Elasticsearch 可用於 加速 WordPress 資料庫的查詢,這是通過建立網站資料庫內容的索引,然後使用 Elasticsearch 來搜尋該索引來完成的,這比原本的 MySQL 查詢速度快得多。
如果您有時間和能力,那麼非常有經驗的 WordPress 和 Elasticsearch 開發人員可以將 Elasticsearch 與 WordPress 網站整合。
如果您的網站使用標準的 WP_Query 查詢,則還可以通過安裝 ElasticPress 來整合 Elasticsearch,ElasticPress 是 WordPress.org 提供的 10up 開發免費外掛,可從 WordPress.org 下載,該外掛自動與 WP_Query 物件整合,是以使用 Elasticsearch 而不是 MySQL 產生查詢結果。
任何大量使用 WP_Query 的網站,都可以從 Elasticsearch 中受益,適合使用 Elasticsearch 的網站說明:
- 導覽列主要是以搜尋方式的網站。
- WooCommerce 網站具有大量訂單,網站管理員需要定期搜尋訂單列表。
- 任何發布大量文章的網站,其中 MySQL 查詢產生的結果緩慢得令人無法接受。
就像 Redis 一樣, 我們也會提供 Elasticsearch 附加元件 (了解如何新增 Elasticsearch 計劃)。
停用資料庫密集型查詢的非關鍵功能
這似乎是麻煩的事情,但如果停用資料庫密集查詢的非關鍵性外掛和佈景主題功能,則需要尋找一個替代方案。
- 最熱門文章或相關文章的小工具和外掛太恐怖了,他們通常在網站範圍內進行大量查詢。
- 使用本機伺服器壓縮圖片的圖片優化外掛,您應該使用外部伺服器的圖片優化外掛來優化圖片。
如果您想使用文章下方所謂的「相關文章」,這些是可以用手動選擇的;這將幾乎減少大量查詢,並且不會損害整個網站的性能。
這需要更多的設定嗎 ?
是的,但是它可以做得更好,因為您可以選擇讀者希望看到的內容。
這是如何做到的呢 ?
建議您可以使用令人驚嘆的 Advanced Custom Fields 外掛,然後將這些欄位分配給我們的部落格文章類型,這使我們能夠搜尋並分配我們想要的任何相關內容到我們的每個部落格文章 (如下圖)。
我們更建議您遠離那些為您的網站增加統計圖 / 文章計數器的外掛,除非您絕對需要它。
例如:在列出論壇文章時,避免在用戶頭像上顯示「792 文章」或「5,243 檢視」,當您進行長時間的討論時,這些計數器將對您的資料庫造成巨大的耗損,通常,請盡量減少使用計數器,僅在必要時使用它們。
這也適用於許多社群平台,例如:在下面圖片顯示,您可以看到流行的 Social Warfare 外掛的回應時間比其下一個外掛的回應時間增長 30 倍,啟用了快取,仍是如此。
此外掛具有相當大的效能耗損,在網站上停用外掛後,載入時間立即得到改善,WordPress 控制台的回應速度也得到了改善。
使用內容傳遞網路 CDN
CDN 是內容傳遞網路的縮寫,這些是遍布全球的伺服器網路 (也稱為 POP),它們只在託管和傳遞 WordPress 網站的靜態 (有時是動態) 內容的副本,例如:圖片、CSS、JavaScript 和視訊串流。
首先,請不要將 CDN 與 WordPress主機混淆,這些是完全獨立的服務,CDN 不能替代您的託管的服務提供商,而是可以提高網站速度的另一種方法,雖然我們在 Kinsta 的主機服務快速發展,但 CDN 可以使您的網站更快。
CDN 的運作方式
CDN 如何工作?
例如,當您使用 WooWP 主機服務時,您必須選擇一個 數據中心位置,例如:美國、歐洲、亞太地區或南美。
假設您選擇美國中部。這意味著您的網站實際上位於愛荷華州的「主機伺服器」上,當歐洲各地的人們訪問您的網站時,與從德克薩斯州達拉斯市訪問該網站的人相比,載入該網站所花費的時間會更長。
為什麼 ? 因為數據必須傳遞更遠的距離,這就是所謂的 延遲,延遲是指網路上數據傳輸所涉及的時間或延遲,距離越遠,延遲就越大。
CDN 的類型
有兩種不同類型的內容傳遞網路:
- 傳統 Pull CDN
- 反向代理 CDN
傳統的請求 CDN 會快取所有內容和媒體的副本,但是仍然會直接從客戶端向託管主機提供者發出請求。例如:KeyCDN 和 CDN77 是傳統 CDN 的範例。
反向代理 CDN 略有不同,儘管它仍然像 CDN 一樣,但它會攔截所有傳入的請求,並充當客戶端和託管主機之間的中介伺服器。例如:Cloudflare 和 Sucuri 是反向代理 CDN 的範例,這就是為什麼您必須將 DNS 直接指向這些提供 CDN 服務商,而不是您自己的主機的原因之一。
這樣的好處是因為它們充當中介伺服器,它們可以提供強大的 Web 應用程式防火牆,從而可以幫助阻止惡意流量攻擊您的 WordPress 網站或託管主機服務提供商。
這樣做的一個缺點是,與傳統的 pull CDN 相比,它們在性能方面確實帶來了一些額外的負荷,但是,由於具有其他性能和安全性功能,因此可以忽略。
以下是在客戶端網站上啟用 Sucuri 之後發生的情況的範例,如您所見,它對通過的不良流量產生了巨大影響,最後這些類型的服務可以幫助您節省流量費用。
CDN 速度測試
之前我們討論了 WordPress 快取的巨大好處,CDN 快取也超級強大,這是因為 CDN 通常比託管主機提供者擁有更多的伺服器的位置,這意味著它們可以將您的所有資產 (圖片、JS、CSS) 快取在離您的訪客最近的伺服器上,並以閃電般的速度提供服務。
如何啟用 CDN
在您的 WordPress 網站上啟用 CDN 並不困難,請按照以下步驟。
步驟 1
選擇一個 CDN 提供商並購買他們的服務,這些通常按月或按數據使用量計費,大部分 CDN 服務商都會有一個計算器來估算您的費用。
- 如果您打算自己建置 KeyCDN,我們建議您閱讀 CDN 服務商的說明文件,每個 CDN 服務商都有提供完整的教學來幫助您入門,或參考這一篇的教學 CDN for dummies。
- 閱讀 Kinsta 上的「關於如何安裝 Cloudflare」和 「如何安裝Sucuri」的深入教學。
步驟 2
如果您使用的是傳統的 Pull CDN 方式,則可以利用 CDN Enabler、WP Rocket 或 Perfmatters 等外掛將與 WordPress 網站整合,這些外掛會自動將您的網站連接到 CDN,您無需進行任何設定即可將網站內容傳遞到 CDN 上。
反向代理 CDN 方式,通常不需要任何外掛,儘管有時它們具有啟用其他功能的外掛。
如何啟用Kinsta 的 CDN
我們使用的是 KeyCDN 的 CDN 服務,好消息是,Kinsta 的 CDN 完全支援 KeyCDN,這是一個具有 HTTP / 2 和 IPv6 的內容傳遞網路,具有 34 個伺服器位置,可為全球的網站內容和媒體提供強大的支援,目前服務的地區包括美國、南美、歐洲、非洲、亞洲和澳大利亞。
如果您是 WooWP 客戶,我們所有的託管計劃都包括免費 CDN 頻寬,您可以通過兩個簡單的步驟啟用 Kinsta CDN。
步驟 1
首先,登錄到 MyKinsta控制台,單擊您的站點,然後在 Kinsta CDN 選項卡上。
步驟 2
然後單擊「啟用 Kinsta CDN」,請等待幾分鐘後,CDN 將自動部署完成,您的網站文件將通過全球的節點快取提供服務。
其他 CDN 優化
這是您可能需要檢查或考慮的一些其他 CDN 優化方式。
- 如果你的網頁有很多評論,那麼頭像可能會產生很多請求,他們從 secure.gravatar.com 加載。可以參考本教學,了解如何從自己的 CDN 加載 Gravatar。????
- 您可以在 CDN 託管的自定義 Web 字體,甚至可以託管 CDN 上的 Google 字體,請查看 WordPress 中託管本地字體的深入指南。
- 確保從 CDN 加載 Favicon 圖標,即使很小,每個請求都很重要 !
需要時將媒體庫和電子郵件分離
產生請求的所有內容都會以一種或多種方式影響您網站的性能,對於承載成千上萬個文件或大型媒體的網站,明智的做法是將其完全分離。
要注意的是,這裡所說的分離,它不同於通過 CDN 提供服務,使用 CDN 時,原始數據 (圖片) 仍然留在您的主機上,CDN 只是具有多個副本。
當 CDN 文件上的快取過期時,它將重新查詢主機以獲取文件的最新副本,CDN 只在長時間快取文件,但是由於它們具有如此多的 POP 節點,因此隨著快取在不同區域中的到期,可能會進行大量重新查詢更新文件。
當您分離媒體庫或文件時,這實際上是你將它們的原始物理位置移出所託管服務商 (主機)。
因此,儘管看起來文件或圖片是從你的網站提供的,但實際上它們確實完全位於其他位置,除了減少返回主機的其他查詢之外,最重要的原因還是在於節省硬碟空間。
將媒體庫分離到 Amazon S3
最受歡迎的分離解決方案之一是 Amazon S3,Amazon S3 是一種存儲解決方案,並且是 Amazon Web Services 許多產品的一部分。
通常,這用於需要額外備份或正在提供大型文件 (下載、程式、影音、遊戲、音樂文件、PDF 等) 的大型站點,Amazon 具有非常可靠的方案,並且由於其龐大的基礎架構,它們可以提供非常低的存儲成本。S3 的一些客戶包括 Netflix、Airbnb、SmugMug、Nasdaq 等等。
因為它們可以完全處理大容量存儲,所以你幾乎可以保證定價將比 WordPress 主機便宜,將媒體庫分離到 AWS 可以是省錢的好方法,並且第一年免費;此外,由於對媒體的請求是直接從 Amazon 提供的,因此可以減輕 WordPress 網站的負載,也就是說這可以縮短加載時間。
查看有關如何將 Amazon S3 來儲存 WordPress 媒體庫 的深入教學,您也可以將 CDN 與分離的媒體庫一起使用,以兼顧兩全其美。
將媒體庫分離到 Google Cloud Storage
另一個分離解決方案是 Google Cloud Storage,由於 Kinsta 由 Google Cloud Platform 提供支援,因此我們是其技術和基礎架構的忠實擁護者,由於 Google 龐大的基礎架構以及它們處理大量存儲的事實,因此它們可以提供非常低的存儲成本,他們的一些客戶包括 Spotify、Vimeo、可口可樂、飛利浦、Evernote 和 Motorola 等等。
查看有關如何 將 WordPress 媒體庫分離到 Google Cloud Storage 的深入教學。
分離行銷電子郵件
不管你是否考慮這麼作,大量的電子郵件的確會對伺服器和伺服器資源產生影響。
對於某些主機,特別是共享主機,濫用此權限甚至可能會使你的郵件系統暫停,對於那些嘗試發送大量電子郵件的人來說,這尤其成為大問題。
這就是為什麼存在第三方交易電子郵件提供商以及許多託管提供商完全阻止在標準連接埠 (25) 上傳遞電子郵件的原因,我們絕不建議你使用主機託管服務提供商來發送電子郵件。
如果您要發送網站文章訂閱或大量行銷電子郵件,我們總是建議您使用以下替代方法以獲得最佳效果:
- 使用第三方專業電子郵件行銷服務
- 與 WordPress 一起使用第三方電子郵件服務提供商 (HTTP API 或 SMTP)
使用第三方電子郵件服務的其他優勢包括:
- 更好的電子郵件傳遞能力。讓電子郵件提供商盡其所能 !
- 被列入 IP 黑名單的機會更少。
電子郵件行銷工具
行銷電子郵件的一些示例包括新聞通訊、產品、功能公告、銷售、事件邀請等等。
以下是一些我們推薦的電子郵件行銷工具:
網站電子郵件服務
甚麼是網站電子郵件的服務,包括來自 WooCommerce 或 EDD 的購買通知、收據,還有帳號創建通知、商品運輸通知、外掛錯誤消息、密碼重置等等。
如果你是 WooWP 客戶,我們將依靠第三方 SMTP 提供程序來確保高可傳遞性。但是,你的網站郵件的數量龐大,我們建議你將郵件服務移到異地,我們建議使用以下一些電子郵件服務:
如何找到效能瓶頸和慢外掛
我們將深入探討如何在 WordPress 網站上查找效能瓶頸以及如何處理的一些技巧。
使用 New Relic 來識別慢速外掛和資料庫查詢
市場上有一些很棒的工具,可以幫助您查明並識別耗時很多的慢速數據庫查詢和外掛,例如:New Relic 或 Datadog。
Kinsta 是 New Relic 的忠實粉絲,每天都在使用它,New Relic 是一個 PHP 監視工具,可用於獲取網站上的詳細性能統計訊息。
如果您是 WooWP 的客戶,甚至可以在 MyKinsta 控制台上添加自己的 New Relic license key。
請注意,請謹慎使用 New Relic,因為它會影響網站性能。
它將 JavaScript 添加到你的網站收集資訊,我們建議你在需要對性能進行故障排除時將其啟用,檢查完畢後,然後再禁用它。
查找緩慢外掛
當 WordPress 外掛導致整體運行緩慢時,根據外掛執行的活動而有所不同的症狀。
但是,在許多情況下,您會發現慢速外掛會影響 WordPress 網站的每個頁面,對於你在下圖中看到的數據的網站,在網站的每個前端頁面上都觀察到總體運行緩慢,這是 New Relic 對網站上外掛性能的檢查的結果。
從上圖中,你會看到 adinjector 外掛所耗費的時間是第二個最慢的外掛的 15 倍以上。
當你看到這樣的數據時,可能會想到可能是外掛編碼上的錯誤,儘管是如此,但並非每個外掛是如此,也有可能是與其它的外掛造成衝突。
外掛配置錯誤、資料庫運行緩慢或響應緩慢的外部資源都有可能會導致外掛消耗大量時間。
因此,當您看到響應緩慢的外掛時,最好查看 New Relic 中的其他幾個資訊,檢視其他訊息,再決定是否停用此外掛,或尋找更好的替代方案。
資料庫負載太高導致整體速度緩慢
優化不佳的資料庫可能會導致 WordPress 網站的整體運行緩慢。上述說明中,我們討論了許多你可以解決此問題的方法,在 New Relic 檢測中與資料庫相關的緩慢度很可能會在兩個地方顯示:
- 首先,您將在檢測圖表中看到大量的 MySQL 活動。
- 其次,您會在「資料庫」圖表中看到一個或多個資料庫表消耗大量時間。
從監測圖表看起來,一個緩慢的資料庫的網站看起來像這樣,如下圖:
為了要了解導致該問題的資料庫表或查詢,點擊到「資料庫」選項。
「資料庫」選項中將指出該表以及消耗時間最多的查詢類型,如果選擇列表中的一項,則可以看到更多詳細信息,包括一些示例查詢。
在這種情況下,資料會指向 wp_options 表中自動加載的數據,可以肯定的是,對該 wp_options 表的快速分析確認已從該表中自動加載了將近 250 MB 的數據,我們就要從網站的資料庫開始優化。
更詳細的 New Relic 檢查教學,請參考 找到 WordPress 控制台的性能瓶頸。
使用免費查詢監控器外掛
你還可以使用免費的 Query Monitor WordPress 外掛,使用它可以識別和調試緩慢的數據庫查詢、AJAX 調用、REST API 請求等。
此外,該外掛還可以報告網站詳細訊息,例如:script 依賴項目,在頁面生成過程中觸發的 WordPress 鉤子,託管環境詳細信息,當前頁面滿足的條件查詢標記等。
可以參考有關 如何使用 Query Monitor 的完整教學。
利用 Staging 環境而不影響正式網站
如果你沒有暫時環境 (Staging),可能會將不知所措,在解決性能問題時而不去影響正式的網站,這個功能 (Staging) 非常好用。
WooWP 具有一鍵式 staging environments。如果你的 WordPress 主機不提供 Staging 環境,你也可以使用 WP Staging 這類的外掛,儘管它並不那麼好用。
如果您喜歡這篇文章,那麼您會喜歡 WooWP 的 WordPress 託管平台。加速您的網站,並從我們經驗豐富的 WordPress 團隊獲得技術支援,基於 Google Cloud 的基礎架構專注於自動擴展、性能和安全性,讓我們向您展示 WooWP Kinsta 的與其他主機商的不同 !
Photo by Yoel J Gonzalez on Unsplash
Sharing the is
發佈留言