我們都希望有人訪問自己的 WordPress 網站的時候,可以飛快的看到文章,但是沒有下面的這幾個基本最佳化技巧,怎麼能實現?
常規的前端效能最佳化
無論你的網站是基於什麼後臺技術實現的,被訪問者訪問的時候,總是會生成常規的 HTML 、 CSS 、 JavaScript 等檔案傳送回客戶端。要想提速你的網站,可以先從前端方面進行最佳化。
前端的效能最佳化是一個很深的東西,有很多技巧和方法,但是你可能只是一個站長而並不是專業的前端工程師,所以這裡我只總結幾個基礎卻又很有效的前端效能最佳化技巧:
1 、壓縮圖片:圖片的下載在網頁開啟的過程中,佔用很多時間,而如果對這些圖片進行壓縮或者其他技巧 (例如 lazy load) 就可以減少這方面的時間。實踐證明,對 jpg 圖片進行 80% 的壓縮,既保證了肉眼看不出質量問題又可以減少一些尺寸,對 png 格式的圖片,可以使用 TinyPNG 來壓縮。
2 、合併檔案:這裡的檔案主要是指 CSS 、 JavaScript 檔案,頁面中每多一個 CSS 、 JavaScript 檔案,瀏覽器就會多一個 HTTP 請求,就會多一個等待時間。理想狀態下,最多隻有一個 CSS 、 JavaScript 檔案,並且進行壓縮使其檔案儘可能小,這方面建議使用 WP Minify 外掛。如果有能力的,還可以合併圖示,把一些小圖片合併起來,做成 CSS Sprite 。
3 、使用 CDN:假如你的伺服器在北京,北京本地訪問起來就會超快,但是廣東地區的訪問者可能會由於距離和線路問題感覺很慢。成熟的 CDN 服務商在全國各地都會有伺服器,如果你把靜態檔案放在上面,廣東地區訪問你的網站,會從廣東附近的伺服器上下載檔案,而且 CDN 的伺服器和寬頻為下載做了最佳化,速度一般會超過你的伺服器,這樣就可以大大的提速了,目前一般建議使用七牛雲端儲存來加速靜態檔案,這裡有 WordPress 外掛:七牛映象儲存 WordPress 外掛。
對於普通站長,瞭解這些就可以了,下面來談談 WordPress 站點上的最佳化。
為 WordPress 安裝快取外掛
快取是提升速度非常重要的東西。當你訪問一個網站,進行過快取最佳化的,會將一些圖片和 CSS 、 JS 檔案快取到你的電腦中。當你下一次訪問的時候,瀏覽器發現快取中的這些檔案沒有過期,就立刻從快取中呼叫出來,就不再從你伺服器上下載了。這樣,就只需要下載 幾 KB 你寫的文字就 Ok 了,當然開啟速度就飛快了。
WordPress 快取,要看你的伺服器的支援程度,如果你的伺服器已經安裝了記憶體快取這些元件,安裝 Memcached 外掛是最最佳化,如果是虛擬主機,建議安裝了 WP Super Cache 。
使用 .htaccess 檔案進行快取
上面是透過安裝外掛來進行快取,如果你不想安裝外掛,可以使用下面的方法進行快取。
將下面程式碼按照你的需求修改,放在你 WordPress 站點根目錄下面的 .htaccess 檔案中即可:
# 快取有效時間 1 年
<FilesMatch ".(ico|pdf|flv)$">
Header set Cache-Control "max-age=29030400, public"
# 快取有效時間 1 周
<FilesMatch ".(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public"
# 快取有效時間 2 天
<FilesMatch ".(xml|txt|css|js)$">
Header set Cache-Control "max-age=172800, proxy-revalidate"
# 快取有效時間 1 分鐘
<FilesMatch ".(html|htm|php)$">
Header set Cache-Control "max-age=60, private, proxy-revalidate"
注意,快取雖然很好用,但是並非快取時間越長越好。有些靜態的檔案,很長時間都不會改變其內容,就可以設定時間長一些。有些動態的檔案,經常修改的,就需要設定時間短一些。曾經有個好友的部落格一個月沒有更新了,問了他一下才知道是快取設定錯了,結果導致開啟的時候還是很久之前的內容。
減少資料庫查詢
動態網站肯定要對資料庫進行一些查詢,而每次查詢,都要建立一個資料庫連線,然後等待資料庫返回資料並輸出。這個過程就要浪費時間。 WordPress 上面有很多不必要的查詢和用不到的功能,去掉這些可以提速。
可以使用下面這段程式碼來檢視一下你的 WordPress 建立了多少查詢,你可以把它複製到主題目錄下面的 functions.php 檔案中,就可以在底部看到相關資訊:
add_action( 'wp_footer', 'wpjam_page_speed' );
function wpjam_page_speed() {
date_default_timezone_set( get_option( 'timezone_string' ) );
$content = '[ ' . date( 'Y-m-d H:i:s T' ) . ' ] ';
$content .= '頁面生成時間 ';
$content .= timer_stop( $display = 0, $precision = 2 );
$content .= ' 查詢 ';
$content .= get_num_queries();
$content .= ' 次';
if( ! current_user_can( 'administrator' ) ) $content = "";
echo $content;
}
至於如何進行這塊的最佳化,在我愛水煮魚中有很多關閉無用功能的技巧,你可以按照自己的需求來搜尋一下。
找個靠譜的主機
找個靠譜的主機才是最有效的。做最好的最佳化,結果放在了一臺經常抽風、寬頻就跟電話線似的伺服器上,肯定開啟也非常慢。選擇主機又是一塊很複雜龐大的內容。如果預算充足,可以選擇 Media Temple 這類主機,一般使用者建議使用 Bluehost 虛擬主機即可。