新・元地方の中規模印刷会社で苦悩する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

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

  関連記事

各種ECサイト(ショッピングサイト)料金比較一覧<改訂版>

1年以上前の記事です。内容が古い可能性があります。以前、ネタにした「各種ECサイ …

no image
埋め込まれたカラープロファイルは基本破棄

1年以上前の記事です。内容が古い可能性があります。カラーマネジメントのカラープロ …

Suicaポイントは自動販売機でドリンク(飲料)を買って貯めよう

1年以上前の記事です。内容が古い可能性があります。少し前にSuicaポイントは2 …

水筒の水漏れ防止のポイント。キャップを締めた際の違和感に注意

1年以上前の記事です。内容が古い可能性があります。水濡れタブレット復活日記。 前 …

Flickr(フリッカー)でALBUMS(アルバム)のスライドショーの埋込みソースを入手する方法

1年以上前の記事です。内容が古い可能性があります。写真共有サイトのFlickr( …

「Ktai Style」導入でWordPressをケータイに対応、テーマは別名にした方がいい #wp

1年以上前の記事です。内容が古い可能性があります。「WordPress(ワードプ …

no image
GPLとは何のこと?

1年以上前の記事です。内容が古い可能性があります。最近、PHPを使った非常に高機 …

Flickr(フリッカー)のメール投稿機能が動かなくなったらひたすら待つべし

1年以上前の記事です。内容が古い可能性があります。二度あることは三度あるのジンク …

Suica(モバイルSuica)限定。グリーン車で電車を乗り換える方法

1年以上前の記事です。内容が古い可能性があります。最近、歳のせいか電車で座れない …

「Windows Liveメール」で署名を作成、使用する方法

1年以上前の記事です。内容が古い可能性があります。今まで何やってたの? と思うよ …

血液型オヤジ