WordPress 全方位優化指南(上)

做爲一個全面的 WordPress 性能優化教程,本文旨在幫助讀者排查 WordPress 網站的性能問題,同時也提供網站前端優化加速的建議。javascript

若是你曾經遇到過 WordPress 管理界面加載緩慢、「MySQL 服務器崩潰」、網頁一直沒法加載等狀況,或者你預計網站的流量將要大漲,相信本教程會對你有益。php

######1. 查看網站前端性能指標css

一般狀況下,網站加載緩慢是因爲網頁規模過大引發的,並且如今的大多數網頁,都包含許多圖片、Flash、視頻以及 JS 文件,這些元素都會給網絡加載帶寬形成壓力,進而導頁面打開緩慢、用戶體驗差的問題。html

若是你準備認真地解決這個問題,你須要安裝部署 Firefox 瀏覽器,Firebug 擴展程序 、Yslow 插件以及 Browser Insight前端

開發時最好儘可能將頁面大小保持在 100KB 最好是 50KB 之內,若是你的網頁包含許多多媒體內容,那你最好學會使用 Yslow。Yslow 會對網站性能進行打分(分值爲0到100),從js腳本、css、多媒體資源等多個方面,80分應該是網站的最低目標。java

不過 Yslow 自己也有些侷限性:mysql

1.最新版的火狐還有谷歌瀏覽器已經沒法使用了react

2.其次 Yslow 主要是頁面結構分析,可是如今界面主要靠 js 繪製例如 react 等web

3.並且 Yslow 自己主要關注的是 PC 端,但是如今是 mobile 時代ajax

給你們推薦一個與 Yslow 有關的文章:YSlow老矣尚能飯否,有興趣的能夠去看看,我的以爲幫助比較大。

Firebug 一直同 Firefox 鏈接在一塊兒,造成了強大的網頁開發工具,經過 Firebug 你能夠編輯、調試和監控任何頁面的 CSS、HTML 和 JavaScript,不過就像 Yslow 主要是負責 PC 端同樣,Firebug 主要針對的是手機端的調試。

Browser Insight 這款工具比較好的地方在於,它支持多平臺頁面監控分析,不管是PC端、移動微信、移動瀏覽器、仍是安卓 webview 均可以兼容。其次,它的功能比較總體化,涉及:頁面響應時間、腳本錯誤、資源加載時間耗時、ajax、DNS/TCP耗時、用戶響應時間分佈等多個維度,相比於上面兩款工具,Browser Insight 算是一個比較全面的前端性能監控分析工具了。

給你們附上三篇以前讀過的相關文章,有需求的話能夠去看看:

高流量網站如何作出高性能?

Firebug,Debugger javascript調試利器 附下載地址

兩款較好的Web前端性能測試工具

2. 關閉 Post Revisions

從 WordPress 2.6 開始,Post 版本開始引用追蹤機制,例如,每次保存一篇 Post 時,數據庫會寫入一次修正。若是你不須要此功能,能夠在 wp-config.php 文件中添加一行代碼禁用之,wp-config.php 文件能夠在 WordPress 主站的安裝目錄找到:

define('WP_POST_REVISIONS', false);

若是你啓用了該功能,一段時間以後,數據庫中會寫入許多修正 post,這個也會致使數據加載緩慢等問題,若是你想刪除它們,只要在插件中運行下面的查詢語句(好比:利用前文提到過的 WP-DBManager)便可。

DELETE FROM wp_posts WHERE post_type = "revision";

該語句會刪除數據庫中的全部 「revision」 posts,使數據庫查詢更加快捷。

注意:使用時請必定仔細,若是你不知道本身在作什麼,請確保先備份數據庫。或尋求專業幫助。

3. 檢查插件

插件每每是致使加載緩慢的重點嫌疑犯, WordPress 提供了豐富的插件,極可能就是由於一個資源分配不佳的插件致使了頁面的加載問題。

例如,過去曾致使過加載緩慢的插件有:Popularity contestaLinks@Feed

檢查插件時,能夠先禁用全部插件,檢查網站重點部分的運行情況。若是沒有問題,依次啓用各個插件,直到發現致使問題的插件,不過這個方法很老實,可是至關耗費時間,並且每次出現問題都要這樣排查一次。

上文說起的Browser Insight 把一個頁面的加載分爲了白屏時間、首屏時間、頁面加載完成時間、資源加載完成時間,其中配合資源加載時間以及其剛剛上線的DNS耗時分析就能夠較爲清楚地定位插件的問題

4. 實施緩存

緩存能夠從事先準備好的存儲區(緩存)檢索數據,而無需在用到同一信息時從新生成之。所以,緩存能極大提高信息檢索的速度,在多數現代應用中都普遍使用。

使用緩存的最簡便方法,是使用緩存插件,固然了,若是你的博客存儲在共享的主機上,這也是惟一的辦法

最經常使用的緩存插件是 WP Super Cache,後起之秀 W3 Total Cache 也是一種強大的緩存插件,並且它天天都在更新,你們能夠試試看。

5. MySQL 優化

MySQL 能夠將查詢結果保存在本身的緩存中。啓用這一功能,需編輯 MySQL 配置文件(一般是在 /etc/my.cnf 路徑下),在其中添加以下代碼:

query_cache_type = 1
query_cache_limit = 1M
query_cache_size = 16M

重啓 MySQL 服務器後,就會建立大小爲 16MB 的查詢緩存(緩存大小取決於可用的 RAM 大小,在內存 4GB 的機器中,可以使用的緩存達250MB)。

檢查 MySQL 運行是否正常,可運行如下查詢:

SHOW STATUS LIKE 'Qcache%';

結果示例:

Qcache_free_blocks    718
Qcache_free_memory    13004008
Qcache_hits    780759
Qcache_inserts    56292
Qcache_lowmem_prunes    0
Qcache_not_cached    3711
Qcache_queries_in_cache    1715
Qcache_total_blocks    4344

若是你想進一步優化 MySQL ,你可使用的選項很是豐富。如下是個人 MySQL 配置文件,針對的是 4GB 內存的四核專用機。若是你使用開箱即用的機器,多半沒法適用這樣的配置,請僅做參考。

[mysqld]
bulk_insert_buffer_size = 8M
connect_timeout=10
interactive_timeout=50
join_buffer=1M
key_buffer=250M
max_allowed_packet=16M
max_connect_errors=10
max_connections=100
max_heap_table_size = 32M
myisam_sort_buffer_size=96M
query_cache_limit = 4M
query_cache_size = 250M
query_cache_type = 1
query_prealloc_size = 65K
query_alloc_block_size = 128K
read_buffer_size=1M
read_rnd_buffer_size=768K
record_buffer=1M
safe-show-database
skip-innodb
skip-locking
skip-networking
sort_buffer=1M
table_cache=4096
thread_cache_size=1024
thread_concurrency=8
tmp_table_size = 32M
wait_timeout=500
# for slow queries, comment when not used
#log-slow-queries=/var/log/mysql-slow.log
#long_query_time=1
#log-queries-not-using-indexes
[mysqld_safe]
nice = -5
open_files_limit = 8192
[mysqldump]
quick
max_allowed_packet = 16M
[myisamchk]
key_buffer = 64M
sort_buffer = 64M
read_buffer = 16M
write_buffer = 16M

超級實用的 mysqlrepot 工具是 MySQL 調試的利器。Mysql tuner 是快速修復數據庫的最佳選擇。MySQL Tuning primerMySQL Activity Report 也是值得一試的好工具。 Maatkit 則是有效管理 MySQL 的必備神器。

MySQL 慢查詢日誌是獲取有問題的查詢信息的有利工具,激活該日誌你須要編輯 my.cof 文件:

log-slow-queries=/var/log/mysql-slow.log
long_query_time=1
log-queries-not-using-indexes

這會建立一個查詢日誌,裏面包含緩慢查詢與缺乏索引的查詢。你須要找出運行緩慢的查詢,才能對其使用內部提供的慢日誌過濾與解析工具。使用'EXPLAIN'能有效幫助你理解並優化複雜的查詢語句。

6. 最小化 HTTP 請求數量

使用更少的圖片(或將全部圖片用一張大圖替代,再用 CSS 調整位置),更少的 JS,更少的 CSS 文件(一般意味着更少的插件),就能減小 HTTP 請求數量。

PHP speedy 插件能將全部的 JS 與 CSS 文件合爲一個大文件,從而切實減小 HTTP 請求的數量。PHP Speedy 的惟一缺點是沒法與其餘插件 100% 兼容。

一樣,你可使用 CSS Sprite generator 將全部圖片整合爲一張大圖,再用 CSS background-position 進行展現。這也能極大地減小 HTTP 請求數量。

7. 使用 Apache .htaccess 壓縮內容

若是你有專屬的服務器,能夠將全部內容壓縮後再傳給瀏覽器。因爲大多數 html 頁面都容易壓縮,這一招能大大下降加載時間。

在 .htaccess 中添加如下代碼:

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/x-javascript application/x-httpd-php application/rss+xml application/atom_xml text/javascript
8. 插件 expires 頭信息

Expire (截止時間)頭信息會告知瀏覽器內容緩存的保存時間。網站的大多數圖片幾乎不會改變,所以能夠將它們保存在本地。

在 .htaccess 中添加如下代碼(若是出現問題,請確保 mod_expires 已經在 Apache 中載入):

ExpiresActive on
ExpiresDefault "access plus 30 days"
Header unset ETag
FileETag None

如下是另外一種設置方法

Header unset Pragma
FileETag None
Header unset ETag

# 1 YEAR

Header set Cache-Control "public"
Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"
Header unset Last-Modified

# 2 HOURS

Header set Cache-Control "max-age=7200, must-revalidate"

# CACHED FOREVER
# MOD_REWRITE TO RENAME EVERY CHANGE

Header set Cache-Control "public"
Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"
Header unset Last-Modified

使用 cacheability engine 檢查緩存配置。

9. 緩存 Gravatars

許多博客都使用 Gravatars(頭像),也即靠在評論邊上的小圖片。然而,gravatars 對於網站優化有兩大缺點:

  1. 每張 gravatars 圖片都須要一次新的 HTTP 請求獲取,即使同一張圖片已經加載過了。(包含100個評論的網頁就須要 100 次額外的 HTTP 請求)
  2. Gravatar 圖片不包含 expire 頭信息。

咱們能夠建立一個本地 gravatar 緩存,將全部網站須要的圖片都存儲在這兒。若是能將 gravatar 緩存保存在一個獨立的自域中,就更好了。

我使用了 Zenpax.com 提供的插件,將全部 gravatars 頭像本地化緩存。

總結

本文主要從網站性能指標、優化緩存、MySQL 等方面給你們介紹瞭如何進行 WordPress 網站的性能優化,明天有時間的話再給你們介紹下從主題優化、圖片壓縮等角度如何來優化 WordPress 網站。

本文的原文做者爲VLADIMIR PRELOVAC,由OneAPM產品運營編譯整理。

原文連接:http://www.prelovac.com/vladimir/wordpress-optimization-guide/

Browser Insight 是一個基於真實用戶的 Web 前端性能監控平臺,可以幫你們定位網站性能瓶頸,網站加速效果可視化;支持瀏覽器、微信、App瀏覽 HTML 和 HTML5頁面。想閱讀更多技術文章,請訪問 OneAPM 官方技術博客

本文轉自 OneAPM 官方博客

相關文章
相關標籤/搜索