做爲一個全面的 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調試利器 附下載地址
從 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,使數據庫查詢更加快捷。
注意:使用時請必定仔細,若是你不知道本身在作什麼,請確保先備份數據庫。或尋求專業幫助。
插件每每是致使加載緩慢的重點嫌疑犯, WordPress 提供了豐富的插件,極可能就是由於一個資源分配不佳的插件致使了頁面的加載問題。
例如,過去曾致使過加載緩慢的插件有:Popularity contest,aLinks 及 @Feed。
檢查插件時,能夠先禁用全部插件,檢查網站重點部分的運行情況。若是沒有問題,依次啓用各個插件,直到發現致使問題的插件,不過這個方法很老實,可是至關耗費時間,並且每次出現問題都要這樣排查一次。
上文說起的Browser Insight 把一個頁面的加載分爲了白屏時間、首屏時間、頁面加載完成時間、資源加載完成時間,其中配合資源加載時間以及其剛剛上線的DNS耗時分析就能夠較爲清楚地定位插件的問題
緩存能夠從事先準備好的存儲區(緩存)檢索數據,而無需在用到同一信息時從新生成之。所以,緩存能極大提高信息檢索的速度,在多數現代應用中都普遍使用。
使用緩存的最簡便方法,是使用緩存插件,固然了,若是你的博客存儲在共享的主機上,這也是惟一的辦法
最經常使用的緩存插件是 WP Super Cache,後起之秀 W3 Total Cache 也是一種強大的緩存插件,並且它天天都在更新,你們能夠試試看。
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 primer 與 MySQL 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'能有效幫助你理解並優化複雜的查詢語句。
使用更少的圖片(或將全部圖片用一張大圖替代,再用 CSS 調整位置),更少的 JS,更少的 CSS 文件(一般意味着更少的插件),就能減小 HTTP 請求數量。
PHP speedy 插件能將全部的 JS 與 CSS 文件合爲一個大文件,從而切實減小 HTTP 請求的數量。PHP Speedy 的惟一缺點是沒法與其餘插件 100% 兼容。
一樣,你可使用 CSS Sprite generator 將全部圖片整合爲一張大圖,再用 CSS background-position 進行展現。這也能極大地減小 HTTP 請求數量。
若是你有專屬的服務器,能夠將全部內容壓縮後再傳給瀏覽器。因爲大多數 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
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 檢查緩存配置。
許多博客都使用 Gravatars(頭像),也即靠在評論邊上的小圖片。然而,gravatars 對於網站優化有兩大缺點:
咱們能夠建立一個本地 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 官方博客