WordPress 速度優化

除了定期清理database以外,減少小工具,減少外掛以外,還有其他方法。

首先利用:
進行測試

先說可以簡單處理的例如是
1.minify JavaScript 和 CSS

他會提供 optimized version 給你線上查看
用FTP工具把原文件下載下來
再把optimized version內的內容覆蓋原文件的內容,再傳回即可

另外簡單的是
2.Specify image dimensions
它指的是你的圖片沒有指定大小,所以為圖片加入 width="圖片寬值" height="圖片高度" 即可。
例子如:

3.Optimize images
通常是指壓縮圖片大小,可以使用
Smush.it™
PNGGauntlet
進行壓縮再上傳

4.Remove query strings from static resources
指的是分析連結中存有版本訊息,並有問號

可在functions.php加入
function qsr_remove_script_version( $src ){
$parts = explode( ‘?ver’, $src );
return $parts[0];
}
function _remove_query_strings_1( $src ){
$rqs = explode( ‘?ver’, $src );
return $rqs[0];
}
function _remove_query_strings_2( $src ){
$rqs = explode( ‘&ver’, $src );
return $rqs[0];
}
add_filter( ‘script_loader_src’, ‘_remove_query_strings_1′, 15, 1 );
add_filter( ‘style_loader_src’, ‘_remove_query_strings_1′, 15, 1 );
add_filter( ‘script_loader_src’, ‘_remove_query_strings_2′, 15, 1 );
add_filter( ‘style_loader_src’, ‘_remove_query_strings_2′, 15, 1 );

注意要加在 ?> 之前

5.Defer parsing of JavaScript
即延遲載入JavaScript

WP Deferred Javascripts 這個外掛是有效的,不過不推薦使用,因為它會導致上面(第4點)的方法失效 [相關的外掛也會失效]
建議使用BWP MINIFY
它能選擇把JS檔放在footer並進行壓縮及組合在一起,而且不會影響上面(第4點)的效果。
(須自行設定JS檔位置)使用了這個外掛也可以減少Total number of requests

外話:如你有使用Disqus,
有關Disqus的應該無法運行壓縮或進行設定瀏覽器快取時效設定
等等都無法處理。
另外,用了bwp-minify,亦會產生版本問題和?,第4點的方法無法移除它,所以無視即可。
Remove query strings from static resources
Minify JavaScript 的問題一樣
但可以增加不少速度,可無視之。

Minify HTML
如果你有開啟快取外掛就基本上不用處理,因為開啟了以後,這裡顯示的處理要求往往只可節省不足1KB的大小。

大約就是這樣,其他基本在網絡上有很多教學,你當然也可以在此問。

最後提醒幾個使用快取外掛會產生的問題

quick cache
它基本上不用設置,很簡單和方便。但沒有除外功能。
每次更新文章,內容,TAG,分類等等的會自動清理。
最大的問題是會令sitemap外掛所產生的sitemap無法正常被GOOGLE WEBMASTER TOOLS讀取。

w3 Total cache
問題是,可能會影響網站的RSS的顯示出現錯誤或空白。
功能強大,設定詳細。
但不一定所有都能被正常開啟,而且很易有錯誤。

hyper cache
基本上最推薦使用,設定簡單,沒有多餘東西。
但沒有數據庫快取功能。可配合db cache reloaded fix使用。
另外要手動在config.php修改。

super cache
只使用過舊版,所以不作評論

關閉自動保存,多版本文章 WORDPRESS 3.9.2實測

網絡上有很多方法去處理自動保存,版本文章的問題。在此綜合了大部分常見的方法。

第一步
在wp-config.php這個文件中加入
define(‘WP_POST_REVISIONS’, false);
define(‘AUTOSAVE_INTERVAL’, false);

86400的值是指自動儲存文章時間(秒)
define(‘AUTOSAVE_INTERVAL’, 86400 );
如下圖:
1

第二步
在functions.php加入

remove_action( ‘post_updated’ , ‘wp_save_post_revision’ );
remove_action(‘pre_post_update’, ‘wp_save_post_revision’ );
add_action( ‘admin_print_scripts’, create_function( ‘$a’, “wp_deregister_script(‘autosave’);" ) );

注意要加在 ?> 的前面。

另外香腸大大在他文章中提及在functions.php加入

function disable_autosave() {
wp_deregister_script(‘autosave’);
}
add_action( ‘wp_print_scripts’, ‘disable_autosave’ );

能關閉文章版本,但有修改後可能會導致網頁空白,無法正常顯示,請注意使用。

第三步:
(建議使用notepad++ 進行編輯/搜尋關鍵字)
開啟wp-admin\post-new.php
找到
wp_enqueue_script( ‘autosave’ );
將其刪除

開啟wp-admin\includes\post.php
找到
if ( $create_in_db ) {
$post_id = wp_insert_post( array( ‘post_title’ => __( ‘Auto Draft’ ), ‘post_type’ => $post_type, ‘post_status’ => ‘auto-draft’ ) );
$post = get_post( $post_id );
if ( current_theme_supports( ‘post-formats’ ) && post_type_supports( $post->post_type, ‘post-formats’ ) && get_option( ‘default_post_format’ ) )
set_post_format( $post, get_option( ‘default_post_format’ ) );
} else {

以下文代替
if ( $create_in_db ) {
global $current_user;
$post = $wpdb->get_row( “SELECT * FROM $wpdb->posts WHERE post_status = ‘auto-draft’ AND post_type = ‘$post_type’ AND post_author = $current_user->ID ORDER BY ID ASC LIMIT 1″ );
if ( !$post ) {
$post_id = wp_insert_post( array( ‘post_title’ => __( ‘Auto Draft’ ), ‘post_type’ => $post_type, ‘post_status’ => ‘auto-draft’ ) );
$post = get_post( $post_id );
}
if ( current_theme_supports( ‘post-formats’ ) && post_type_supports( $post->post_type, ‘post-formats’ ) && get_option( ‘default_post_format’ ) )
set_post_format( $post, get_option( ‘default_post_format’ ) );
} else {

而POP提及的修改wp-admin\post.php,有機會導致文章無法刪除,請注意使用。
其內容是:

if ( ‘attachment’ !== $post_type );
取代
wp_enqueue_script(‘autosave’);

根據上面方法,基本上
不產生自動保存版本,及佔用ID
但新增新文章不保存的話仍然會產生自動保存文章
另外,以外掛查看(如:WP CLEAN UP)會發現有Auto Draft
把它清理的話便會佔用1個ID,所以可暫時不管。(如果你很在意ID的話)。

參考文章

http://sofree.cc/disable-revision-autosave/

http://www.ludou.org/wordpress-post-id-continuous.html

http://429006.com/article/technology/3046.htm