網頁設計-加快WordPress的頁面生成和載入速度
網頁設計-加快WordPress的頁面生成和載入速度
前一陣,此blog的頁面打開速度慢的要命,我每次打開都需要大約10秒鐘的時間。而通過Google Analytics的資料看到,70%+用戶在這個blog的停留時間還不到十秒:(。所以我決定加速一下我的blog,後來看起來似乎有些效果。下面是我用的一些方法,希望對後來人有些用處。
安裝WP-Cache 2.0
WP-Cache 2.0可以將頁面緩存,在短時間內(默認為1個小時,可以在後臺設置)的再次流覽,將直接發送緩存的頁面,相當於將WordPress給靜態化了。
好處是顯然的。而且這個版本的WP-Cache 2.0在緩存的時候根據頁面URL+Cookie進行緩存的,所以它不會影響COOKIE的使用。注意,WP-Cache 2.0唯讀取Cookie中的email位址,然後根據email位址判定是否屬於同一個用戶。由於大多數人都沒有留下Email,所以我修改成根據Cookie中的用戶名來判斷,將插件目錄下的wp-cache-phase1.php的第67行改成:
//if (preg_match(“/^wordpress|^comment_author_email_/”, $key)) {
if (preg_match(“/^wordpress|^comment_author_/”, $key)) {
由於大部流覽者的cookie都是空的,所以這個插件會加快這大部分的流覽速度。另外,這個插件還會偵測文章更新,即時更新緩存等。
但是缺點也是顯然的。首先,在頁面還沒有生成的時候,就進行COOKIE的讀取和交換,將降低速度,某種程度上來說,它使得頭次流覽的速度更慢。再者,這個插件在運行的時候,還是得先把其他插件初始化,所以它只是減少了頁面生成的函數調用的時間。
效果:不明顯。事實上,這個插件主要是用來降低系統CPU占用量的,對頁面載入速度影響有限。
改善插件
我並沒有安裝太多插件,而且都是些小型的插件,從來不裝像UTW那樣的巨無霸插件。但是我還是把那些非插件必須的檔(大部分是我修改插件的時候新加的)都移出插件目錄。以免WP錯把它們當成插件檔進行初始化處理。
效果不明。因為經過處理的檔不多也不大,想必影響有限。
頁面靜態化
一個不變的事實是:html頁面永遠要比php頁面快的多,而且幾乎不佔用CPU資源。所以將頁面靜態化是一個好主意。但將所有頁面靜態化,沒有這個必要。所以我選擇了將blog主頁進行靜態化處理——各位如果不信的話,直接頁面刷新,然後看一下右邊的隨機文章變了沒有:)。
我同學告訴我頁面靜態化有很多種方法,但我決定採用最土的一種方法:
首先,在根目錄下建立一個cron.sh檔,裏面的內容是:
wget -O /home/aaaa/zhiqiang.org/blog/index.html http://zhiqiang.org/blog/index.php
上面的/home/aaaa是我的根目錄,其中aaaa是用戶名。再使用Fterm SSH登錄遠端主機,輸入
crontab -e
在出來的編輯介面中輸入
*/10 * * * * /home/aaaa/cron.sh
再保存就OK了。這樣,系統會自動地每10分鐘一次將blog的動態主頁index.php轉成靜態的index.html,以後訪問主頁的時候就會直接訪問index.html,從而實現了blog主頁面的html靜態化。
缺點:COOKIE失效。不過山人自有妙計,使用javascript本地讀取COOKIE然後填入表格即可。
效果:明顯。
合併JS和CSS檔
流覽頁面的時候,把頁面保存下來,便能看到這個頁面含有的檔。檔太多,會大大降低流覽速度。而WordPress的插件系統使得JS和CSS檔很多,所以,應當合併一下JS和CSS檔。
手動合併是一個方法,但是容易弄錯,而且不太好修改。另一個方法是建立一個新的all.js.php檔,內容是:
< ?php
require_once(‘目錄/wp-blog-header.php’ ) ;
include (“/blog/a.js” ) ;
include (“/b.js” ) ;
?>
就是將header.php裏面的那些js文件都include到all.js.php,然後在header裏面包含all.js.php檔即可: