上一篇 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)化人員的工作。
就這個頁面資源加載耗時的功能拌喉,給大家推薦幾個不錯的工具:New Relic、OneAPM 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 插件就能做到這一點,其效率真是令人贊嘆韭脊,具體方法蹂风,在下面這個文章中有具體的介紹:
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 官方博客