新・元地方の中規模印刷会社で苦悩するWebデザイナー改めWebディレクターの日記

自由な20代、窮屈な30代を経て、遂に40代になっちまったWebディレクター&パソコン講師の覚書と思う言(こと)。略称【ちほちゅう】

*

WordPressを軽量化(高速化)するために行う3つの方策

      2014/11/14

  • このエントリーをはてなブックマークに追加

1年以上前の記事です。内容が古い可能性があります。

最近は、そこかしこでCMSと言えばワードプレス(WordPress)と行った感じですが、ワードプレス(WordPress)にも良いところもあれば悪いところもあります。
良いところはなんといっても無料で高機能といったところでしょうか。

一方で悪いところの代表としてちょくちょくあげられるのが動作が遅いこと。
どうもワードプレス(WordPress)のデータベースの構造が汎用性、カスタマイズ性を重視したがために、
処理速度の出る構造になっていないようです。

この辺り、SEをやっていたときに学んだこともいずれ忘れないうちに小出ししていこうと思っています。
で、今回はワードプレスの処理速度をなるべくあげてあげるべく方策を紹介したいと思います。

WordPress

スポンサーリンク
 

それではWordPressを軽量化するために行うべき施策を上げていきたいと思います。
WordPressは動的CMSであり、リクエストのたびにPHPプログラムを実行してHTMLを作り出しているという仕組みになっています。これがよく比較される「Movable Type」との一番の違いで、Movable Typeは投稿時にHTMLファイルを作り出している静的CMSなんです。

そこで、動かすPHPスクリプトをなるべく減らしてあげるというのがまず、高速化に繋がってくるわけです。
といったところでまず最初の「WordPressを軽量化(高速化)するために行う方策」は

リクエストの多いファイルは予め用意しておく。

以下、「ハイパフォーマンス WordPress サイト入門 » WordCamp KOBE 2011」からの引用となります。

例えば、以下のファイルなんかは、ブラウザやクローラからファイルの有無を確認されることが多いです。

/favicon.ico
/apple-touch-icon.png
/robots.txt
/crossdomain.xml

これらは、あらかじめ用意しておいたほうが良いですね。

つまり、「確認され、ないと判断され、リダイレクトされる」よりは、「確認され、あった」で済ます方がPHPを動かす機会が少なくてすむ。ということです。とのことで、これらを適当に作成して(といってもルールがあります)トップディレクトリに配置しておきました。
各ファイルのルールに関しては以下のリンクを参考にして下さい。

ファビコン(icoファイル)をオンラインで作ってくれるサイト | ちほちゅう
iPhone/iPadのホーム画面用アイコンapple-touch-icon.pngをサイトに設定しよう | 編集長ブログ―安田英久 | Web担当者Forum.
robots.txtの書き方と効果的な活用法
Flash のクロスドメイン セキュリティ | Brightcove Support

.htaccessでなるべく余計なPHPに関してのリクエストを減らしてあげる

さらに先ほどの資料からの引用です。

.htaccess を以下のように修正すれば、Web サーバレベルで「404 Not Found」を返し、WordPress が呼び出されません。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !\.(html?|xml|txt|xsl|js|css|jpe?g|png|gif|ico)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

これは、リクエストされたファイルの拡張子で静的ファイルか判断し、静的ファイルへのリクエストの場合は WordPress を起動させないための設定です。

これを書くことで、画像やJS等へのリクエストに対してワードプレスを通さずに直接読み込ますことが可能となるようです。
実はこれ、ソースちょっと改造してます。うちの環境では上記のとおりでないとダメでした。

さらに、マルチサイト機能を使っている場合は、

Web サーバとして Apache を採用していて、子サイトのサイト名が hoge.example.com で、ブログIDが2の場合。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^hoge\.example\.com$
RewriteRule ^(/files/.+) %{HTTP_HOST}$1 [C]
RewriteRule ^hoge\.example\.com(/files/.*)
/wp-content/blogs.dir/2$1 [L]

ただし、子サイトを追加したりした場合は、都度 .htaccess を手で修正してやらなければならないので注意が必要です。

と言った記述も追記してあげると良いとのこと。

マルチサイト機能は百害あって一利なしとも言われていますが(言い過ぎ)マルチサイトを使っている場合は上記の設定を「.htaccess」にしてあげましょう。
ちなみに自分、マルチサイト使ってないのでやってません。

さらに、キャッシュの設定もしておくとリクエストを減らせていいですね。

Apache の .htaccess に書くなら、こんな感じ。

 
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 604800 seconds"
ExpiresByType application/x-javascript "access plus 604800 seconds"
</IfModule>



これで画像は30日、css・js などは7日間、ブラウザにキャッシュされます。

これは、一度読み込ませた静的ファイルをキャッシュさせておく設定です。

上記の表記を「.htaccess」に追記してWordPressの入っている一番上のディレクトリに置いてあげるということになります。

ちなみに、上記資料内では最後にとんでもないことを言ってます。

もし、Apache を使用していて httpd.conf が修正できる場合は、これらの設定はすべて httpd.conf で行い .htaccess は使用しないようにした方が賢明です。

中には、httpd.confの編集が許されているホスティングサーバーもあるのかもしれませんが、ほとんどは許されていないと思います。
したがって、こんなこと言われても困るので、現状「.htaccess」に上記記述を書いておくしかないでしょうね。

そもそもApacheを使わない

なんてことも上記資料では言っていますが、さすがにhttpdを入れ替えることは無理なので、これは無視しておきましょう。

軽量化、高速化のできるプラグイン(「WP File cache」、「WP Super Cache」等)を導入する

これも上記資料内でちょっと触れていますね。
自分はObject Cacheされたデータを保存する「WP File cache」とPHP の実行結果をキャッシュする「WP Super Cache」を取り入れています。

WordPress › WP Super Cache « WordPress Plugins
WordPress › WP File Cache « WordPress Plugins

「WP File cache」が最新版の「WordPress 4.0」でのテストが住んでいないようなので心配なのですが、今のところトラブルなく使えているようです。


 

と、とりあえず自分が取り入れているのは以上3つ。

資料内には他にも多くの軽量化するための方法が書かれていますが、自分の場合、そもそもレンタルサーバなのできないことが多すぎます。
これに強いて加えるとするならば、スクリプトの重複を避ける等、HTMLから無駄なソースを消していくといったことかなぁ。
これを日々、気づくたびに行うというのをやっていこうと思ってます。

Webサイトは作っただけではダメ。
作って、効果測定して、結果を見てまたソースを書き換えて、そんなことをしていきながら徐々に集客を増やしていくといった行為が必要になってくるわけですね。

なんだ、リアルといっしょじゃん!

 - CMS, WordPress, 覚え書き , , ,

アドセンス広告メイン

Message

メールアドレスが公開されることはありません。

  関連記事

no image
企画書は長期構想で一気に仕上げろ!!

1年以上前の記事です。内容が古い可能性があります。ディレクターになり企画書を書く …

no image
Googleのプラスワン(+1)ボタンをつけてみた(7/1追記)

1年以上前の記事です。内容が古い可能性があります。日本ではまだサービスを開始して …

no image
これはすごい。iPhoneの隠しコマンド一覧

1年以上前の記事です。内容が古い可能性があります。iPhoneの隠しコマンドとい …

「iPhone 7」でシャッター音を出さずに写真を撮る(消音撮影する)方法【AssistiveTouch】

1年以上前の記事です。内容が古い可能性があります。「iPhone 7」といえば、 …

「カエレバ」が便利そうなので色々なアフィリエイトに手を出してみた(7net編)

1年以上前の記事です。内容が古い可能性があります。「カエレバ」で対応しているアフ …

GREE(グリー)を退会する方法【スマートフォン編】#3

1年以上前の記事です。内容が古い可能性があります。#1 | #2 | #3 3回 …

no image
Safari(javascriptのバグ?)

1年以上前の記事です。内容が古い可能性があります。またまた「safari」に関し …

Flickr(フリッカー)とFacebook(フェイスブック)の連携を復活させる方法

1年以上前の記事です。内容が古い可能性があります。Flickr(フリッカー)とF …

no image
SpywareBlaster

1年以上前の記事です。内容が古い可能性があります。この前、スパイウェアに犯された …

左下クイック起動アイコンに「デスクトップの表示」を再登録する方法

1年以上前の記事です。内容が古い可能性があります。すべては以下のリンク先で解説し …

血液型オヤジ