WordPress 全方位優(yōu)化指南(下)

上一篇 WordPress 全方位性能優(yōu)化指南(上)主要從網(wǎng)站性能指標(biāo)杉允、優(yōu)化緩存、MySQL 等方面給大家介紹了如何進行 WordPress 性能優(yōu)化席里,但還遠(yuǎn)遠(yuǎn)不夠叔磷,畢竟像 WordPress 這樣的大范圍的被使用的主題模板,可以優(yōu)化的地方還是很多的奖磁。

今天主要從主題優(yōu)化改基、緩存優(yōu)化、圖片優(yōu)化等各個方面和大家聊一下咖为。

1. 優(yōu)化主題

WordPress 的一大特色就是具有豐富的主題秕狰,不同的主題頁可能導(dǎo)致頁面的加載時間不一致,其 function.php 文件中包含帶有插件特性的代碼躁染,因此插件可能導(dǎo)致的問題封恰,主題也可能導(dǎo)致。如果你懷疑主題導(dǎo)致了性能問題褐啡,可對該主題進行性能測試。

而且鳖昌,主題中使用了大量的 JS 备畦、圖片或者css文件等低飒,不過 WordPress 的好處也就在于其可編輯,如果能有特定的工具可以幫助前端人員分析 頁面資源加載耗時懂盐,就像下圖這樣的褥赊,會大大的方便前端優(yōu)化人員的工作。

高流量網(wǎng)站如何做出高性能莉恼?

就這個頁面資源加載耗時的功能拌喉,給大家推薦幾個不錯的工具:New RelicOneAPM Browser Insight俐银、AppDynamics尿背、Ruxit

2. 優(yōu)化數(shù)據(jù)庫表

數(shù)據(jù)庫表應(yīng)當(dāng)定期進行優(yōu)化(或者修復(fù)),以保持最佳性能捶惜,對于這個需求田藐,給大家推薦個插件, WP-DBManager 吱七,該插件還可用于數(shù)據(jù)庫備份汽久,這對任何博客網(wǎng)站都至關(guān)重要。

有了 WP-DBManager踊餐,你只要安排好計劃景醇,就可以放手讓插件自動完成工作了×吡耄或者三痰,你也可以試試 phpmyadmin 之類的工具,手動優(yōu)化或修復(fù)表格苍碟。

3. JS 和 CSS 位置的優(yōu)化

前端優(yōu)化傳統(tǒng)的方法一直是將 CSS 文件放在頁面頭部使之最先被加載酒觅,而將 JS 文件(盡可能地)放在頁面[底部],可謂金科玉律微峰。

但是很多時候我們要結(jié)合實際情況來看舷丹,例如有的時候頁面渲染都加在完了但是有些按鈕功能不可用就是因為 JavaScript 還沒有加載完畢。關(guān)于這個問題之前看過一個帖子

前端性能優(yōu)化(三)——傳統(tǒng) JavaScript 優(yōu)化的誤區(qū)

里面有句話講的很好:

我們優(yōu)化的目的蜓肆,就是不要讓用戶一直得不到響應(yīng)颜凯,避免空白等待,讓用戶體驗越來越好仗扬。

4. PHP Opcode 緩存

PHP 是一種解釋型語言症概,這意味著每次運行 PHP 代碼時,都會將其編譯為所謂的 op-codes早芭,之后再在系統(tǒng)中執(zhí)行這些 op-codes彼城。通過安裝 eAccelerator 之類的 opcode 緩存,就能將編譯過程進行緩存。當(dāng)然也存在其他的緩存解決方案募壕。

安裝 eAccelerator调炬,解壓壓縮包,進入 eAccelerator 文件夾舱馅,輸入:

phpize
./configure
make
make install

即可安裝 eAccelerator 了缰泡。

接下來,創(chuàng)建用于存儲的臨時文件夾:

mkdir /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator

最后代嗤,啟用 eAccelerator棘钞。在 php.ini 文件(通常在 /etc/php.ini 或 /usr/lib/php.ini 路徑下)底部輸入以下代碼:

extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

這些改變會立即生效,PHP 無需重啟干毅。

注釋1:專門針對于PHP應(yīng)用進行優(yōu)化的工具不是很多宜猜,國內(nèi)外好的也就那么幾家,推薦給大家看一看:New Relic溶锭、OneAPM Application Insight宝恶、AppDynamics

值得一提的是趴捅,OneAPM 的這款 Application Insight 產(chǎn)品還支持往前端頁面中自動注入他們家的另外一款針對前端性能監(jiān)控的工具 Browser Insight垫毙,這樣就避免了相關(guān)的插碼工作,降低了工作量拱绑,前兩天在一篇文章中看到過相關(guān)介紹综芥,覺得還不錯,也推薦給大家:拒絕「技術(shù)椓圆Γ」選擇恐懼癥

注釋2:如果你還想要更好的性能膀藐,可以使用 WP Super Cache 與 eAccelerator 插件

注釋3:不幸的是红省,若是 PHP 作為 CGI 運行额各,eAccelerator 便無法使用。你可以嘗試使用 fastcgi吧恃,該工具能與 suExec 和 eAccelerator 協(xié)同工作虾啦。

5. 使用 smush.it 優(yōu)化圖片

人們經(jīng)常忽視,圖片還可以進一步優(yōu)化(變得更泻墼ⅰ)傲醉,從而大大縮短頁面加載時間。
設(shè)想呻率,你只要打開一個網(wǎng)站硬毕,點擊瀏覽器中的一個按鈕,就能將網(wǎng)站中的所有圖片進行優(yōu)化礼仗,并打包在一個 zip 文件中吐咳,豈不是完美逻悠?

smush.it 與其 Firefox 插件就能做到這一點,其效率真是令人贊嘆韭脊,具體方法蹂风,在下面這個文章中有具體的介紹:

前端高性能優(yōu)化(一)

6. 解決無法發(fā)布文章的問題

如果你遇到 WordPress 管理界面逐漸停止響應(yīng)、無法發(fā)布或更新文章的情況乾蓬,很可能是遇到了 mod_security 的限制。

ModSecurity 是用于提高網(wǎng)站安全度的 Apache 模塊慎恒,能阻止特定的系統(tǒng)入侵任内。然而,它有時會認(rèn)為正常的 WordPress MySQL 查詢語句行為可疑而將之列入黑名單融柬,進而導(dǎo)致網(wǎng)站運行緩慢甚至無響應(yīng)死嗦。

檢測是否的確如此,可檢查 Apache 錯誤日志粒氧,比如:

tail -f /usr/local/apache/logs/error_log

進而查看如下內(nèi)容:

ModSecurity: Access denied with code 500 (phase 2) ... [id "300013"] [rev "1"] [msg "Generic SQL injection protection"] [severity "CRITICAL"] [hostname  www.prelovac.com"] [uri "/vladimir/wp-admin/page.php"

這說明網(wǎng)頁訪問被 id 為 300013 的安全條例拒絕越除。解決辦法是讓此安全條例將問題頁面加入白名單。

具體操作是外盯,編輯 Apache 配置文件(可能的位置是 usr/local/apache/conf/modsec2/exclude.conf)摘盆,添加以下代碼:

SecRuleRemoveById 300013

這會讓給定的安全條例將此頁面加入白名單,網(wǎng)站得以正常運轉(zhuǎn)饱苟。

7. RSS Pings 與 Pingbacks

導(dǎo)致 WordPress 博客運轉(zhuǎn)緩慢的原因還可能包括 rss ping 與 pingback 超時孩擂。

默認(rèn)情況下,WordPress 會試圖對 ping 列表(起通常位置是設(shè)置>寫入面板)中的服務(wù)器發(fā)起 ping箱熬,若是其中一個響應(yīng)超時类垦,就會拖慢整個進程。

第二個原因是 post pingbacks城须,這是 WordPress 用來通知文章中外鏈網(wǎng)站的機制蚤认。你可以在設(shè)置>討論中取消選中“嘗試通知文章中超鏈接的所有博客(會拖慢文章加載速度)”,從而禁用 pingbacks糕伐。

清空 ping list 并禁用 pingbacks砰琢,看是否有助于提高文章加載速度。

8. 使用子域分擔(dān)負(fù)載

大多數(shù)瀏覽器的設(shè)置是從一個域名加載 2 到 4 個文件赤炒,并發(fā)地從多個域名進行下載氯析。如果你將一部分文件移到不同的域名下(比如子域名),瀏覽器就會并發(fā)地下載 4 個或更多文件莺褒。

將主題圖片上傳到自己創(chuàng)建的子域中是不錯的優(yōu)化辦法掩缓。我個人就創(chuàng)建了 demo.prelovac.com/images 路徑,并將所有主題圖片上傳到這兒遵岩,之后你辣,再把主題 style.css 中的圖片文件 url 改為絕對路徑巡通,大功告成了!

總結(jié)

現(xiàn)代的網(wǎng)站服務(wù)器與網(wǎng)站不斷發(fā)展舍哄,越來越多地依賴于諸多組件宴凉,WordPress 因為其特點被廣泛應(yīng)用于各種網(wǎng)站、博客之中表悬,所以對其有優(yōu)化需求的用戶也非常之多弥锄。

這次在這兩篇性能優(yōu)化的文章中主要介紹了基于 WordPress主題的網(wǎng)站優(yōu)化的多種方式:從網(wǎng)站前端優(yōu)化、PHP 以及 改進到 WordPress 設(shè)置優(yōu)化蟆沫。衷心希望本文能幫助讀者創(chuàng)建速度更快籽暇、響應(yīng)更迅速的 WordPress 網(wǎng)站。

Browser Insight 是一個基于真實用戶的 Web 前端性能監(jiān)控平臺饭庞,能夠幫大家定位網(wǎng)站性能瓶頸戒悠,網(wǎng)站加速效果可視化;支持瀏覽器舟山、微信绸狐、App瀏覽 HTML 和 HTML5頁面。想閱讀更多技術(shù)文章累盗,請訪問 OneAPM 官方技術(shù)博客寒矿。
本文轉(zhuǎn)自 OneAPM 官方博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市幅骄,隨后出現(xiàn)的幾起案子劫窒,更是在濱河造成了極大的恐慌,老刑警劉巖拆座,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件主巍,死亡現(xiàn)場離奇詭異,居然都是意外死亡挪凑,警方通過查閱死者的電腦和手機孕索,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來躏碳,“玉大人搞旭,你說我怎么就攤上這事」矫啵” “怎么了肄渗?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長咬最。 經(jīng)常有香客問我翎嫡,道長,這世上最難降的妖魔是什么永乌? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任惑申,我火速辦了婚禮具伍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘圈驼。我一直安慰自己人芽,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布绩脆。 她就那樣靜靜地躺著萤厅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪靴迫。 梳的紋絲不亂的頭發(fā)上祈坠,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天,我揣著相機與錄音矢劲,去河邊找鬼。 笑死慌随,一個胖子當(dāng)著我的面吹牛芬沉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播阁猜,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼丸逸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了剃袍?” 一聲冷哼從身側(cè)響起黄刚,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎民效,沒想到半個月后憔维,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡畏邢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年业扒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舒萎。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡程储,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出臂寝,到底是詐尸還是另有隱情章鲤,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布咆贬,位于F島的核電站败徊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏素征。R本人自食惡果不足惜集嵌,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一萝挤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧根欧,春花似錦怜珍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嫌拣,卻和暖如春柔袁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背异逐。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工捶索, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人灰瞻。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓腥例,卻偏偏與公主長得像,于是被迫代替她去往敵國和親酝润。 傳聞我的和親對象是個殘疾皇子燎竖,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容