WordPressを軽量化(高速化)するために行う3つの方策
2014/11/14
1年以上前の記事です。内容が古い可能性があります。
最近は、そこかしこでCMSと言えばワードプレス(WordPress)と行った感じですが、ワードプレス(WordPress)にも良いところもあれば悪いところもあります。
良いところはなんといっても無料で高機能といったところでしょうか。
一方で悪いところの代表としてちょくちょくあげられるのが動作が遅いこと。
どうもワードプレス(WordPress)のデータベースの構造が汎用性、カスタマイズ性を重視したがために、
処理速度の出る構造になっていないようです。
この辺り、SEをやっていたときに学んだこともいずれ忘れないうちに小出ししていこうと思っています。
で、今回はワードプレスの処理速度をなるべくあげてあげるべく方策を紹介したいと思います。
それでは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サイトは作っただけではダメ。
作って、効果測定して、結果を見てまたソースを書き換えて、そんなことをしていきながら徐々に集客を増やしていくといった行為が必要になってくるわけですね。
なんだ、リアルといっしょじゃん!
アドセンス広告メイン
関連記事
-
-
ツイッターに何でも連携。「twitterfeed」でYahoo!ブログも
1年以上前の記事です。内容が古い可能性があります。ライブドアブログ(livedo …
-
-
勝間和代さんにTwitterを学ぶ (2010/1/8追記)
1年以上前の記事です。内容が古い可能性があります。まだ始めたばかりの勝間和代さん …
-
-
最近よく聞く「マーケティングオートメーション」とは何のこと?
1年以上前の記事です。内容が古い可能性があります。このところ、よく耳にする「マー …
-
-
「テレビが無い」より「親(家族)が払ってる」のほうがNHK受信料契約は解約しやすい
1年以上前の記事です。内容が古い可能性があります。こんな簡単なことだったら最初か …
-
-
ENEOSカードが使えなくなったのでポイントで断然お得な楽天カードに変えようと思う
1年以上前の記事です。内容が古い可能性があります。三菱東京UFJ銀行のマイカード …
-
-
イメージ広告も表示させた方が広告収益が上がる-その2
1年以上前の記事です。内容が古い可能性があります。「Googleに勧められたので …
-
-
ツイッター(Twitter)、リストから外すのも「リストに追加」
1年以上前の記事です。内容が古い可能性があります。ツイッター(Twitter)で …
-
-
Google+からツイッター、Facebookへ同期。「Plusist」
1年以上前の記事です。内容が古い可能性があります。個人的にはツイッターメインなの …
-
-
「Twitter for iPhone」でDM(ダイレクトメッセージ)を送信する方法
1年以上前の記事です。内容が古い可能性があります。iPhoneのツイッター公式ク …
-
-
WebのデータをZIP圧縮して受け取ったら注意すること
1年以上前の記事です。内容が古い可能性があります。「つぶくま」オープンしました。 …