WordPressプラグインのおっぱい問題

まずはじめに先日WordCamp Tokyo 2013のテクニカルセッションのパネルディスカッションに登壇しました!

当日お会いしたみなさん、スタッフのみなさん、ありがとうございましたー!

プラグインって重いの?

たしかに単純に処理が増えるのでなんでもかんでも大量に入れるのは好ましくないと言えます。

ただし、よくfunctions.phpで書いたほうが早いという記述を見るのですが、それは間違いです。

同じ処理をするならどっちでも同じなので、単純にメンテナンス性とかでどちらに書くかを決めましょう。

 

get_option()とパフォーマンスの関係

プラグインをインストールすると多くの場合、管理画面があります。

この管理画面で保存されたデータは、Options APIっていうのを使用してデータベースに保存されるんですが、これらのオプションデータはWordPressの画面が表示される際にまとめて取得されます。

WordPressをゴリゴリ触ったことがある人なら、get_option() っていうのを見たことがありますよね?

この関数はOptions APIからデータを取得するための関数で、実はこの関数を実行するたびにデータベースへアクセスしているわけではありません。これ重要です。

こうすることで、データベースへのアクセス回数を減らして高速化をはかってるんですね。

で、プラグインをたくさん入れると当然そのプラグインの設定項目が増えるわけですから、オプションに保存されてるデータも増えます。

これは、Windowsでいうレジストリの肥大化に似たような状態で、WordPressのパフォーマンスに大きな悪影響をもたらすことがあります。

 

ただし、ひとつのプラグインが保存するデータはたかが知れてるので、普通に使ってる限りでは多くの場合問題になりません。

 

プラグインをあれこれ試すとやばい!

WordPressプラグインのAPIには、プラグインがアンインストールされた時にいろいろと掃除をするためのAPIがあります。

しかし残念ながらこの仕組をうまく使用しているプラグインはあまり多くありません。

そのため、プラグインをアンインストールした後もオプションにそのデータが保存されたままになっています。。。

つまり、実はプラグインをアンインストールした後もゴミデータをとり続けてるってことです。

 

みなさんが、プラグインをサイトにインストールしますよね。

で、確認のために画面を操作してオプションデータを保存します。そして、アンインストールしたあとでまた別のプラグインを試す。。。

この繰り返しによってオプションデータが劇的に肥大化するわけです。

 

で、このオプションがいっぱいになる問題を、専門家のみなさんは おっぱい問題 と呼んでるのですが、これを防ぐ方法は本番環境でプラグインをあれこれ試さないことにつきます。

いくつかのキャッシュ系プラグイン(WP Super Cacheはちゃんと掃除してくれます。)は、アンインストール後にキャッシュファイルも放置しちゃったりするので、ファイルを作る系のプラグインは特に本番環境で安易に試さないように気をつけましょう。

 

というわけで、今回の記事は おっぱい問題 という言葉を思いついたのでそれを使いたかっただけです。