WordPress サイトのパフォーマンスチューニング (1)

過去にも何度かパフォーマンスチューニングを施してきたウチのサイトですが、まだまだトップページの表示が遅い。

ひょっとすると query 数が多いんじゃないか?とは思っていたのだが、あらためて他の WordPress で作成されたサイトと比較してみると、ウチのサイトは明らかに query 数が多い。
SAKURA のレンタルサーバでは、 MySQL サーバと Apache サーバが別のサーバなので、query 数が多いのは、パフォーマンス的に不利だ。
(参照:WordPressの不要なプラグインを外してチューニングする記事のメモ (blog@browncat.org)

これは、なんとかせねばだ。と言うことで、プラグインを止めたり改良したり、結果をキャッシュに持ったりしてみました。

ちなみにウチのサイトと他の方の WordPress サイトのトップページでの query 数を比較すると、こんな感じ。

サイト query 数 処理時間
独断と偏見の何でもレビュー 69 queries 2.006 seconds.
Binsan’s Cafe 16 queries 0.384 seconds.
hiromasa.another :o) 24 queries. 0.281 seconds.
orioa 61 queries. 0.390 seconds
M’s Life 2 25 queries. 1.138 seconds.
MMRT daily life 25 queries. 0.587 seconds

query 数を増大させているプラグインを特定する

query 数を増大させているだろうと目星を付けたのは、以下の2プラグイン。

まずは、"Popularity Contest" を停止してみる。

  • トップページ 69 queries. → 58 queries.
  • シングルページ 35 queries. → 35 queries.

おぉ!減った減ったトップページの query 数が 11 も減ったぞ。

続いて、"Brian's Latest Comments" を停止してみる。

  • トップページ 58 queries. → 42 queries.
  • シングルページ 35 queries. → 35 queries.

さらに 16 減ってトップページの query 数が 42 になった!

"Brian's Latest Comments" プラグインを改良する

と、ここで止めておいたら、ある人に

一年前のエントリーにコメントしたときって、ご老公のブログに接続してコメントの返信を読むときってどうやって入っていったらいいの? 
コメントしたエントリーを見つけにくいんだけど?

などと、言われてしまった。

まさに、この問題に対処するために "Brian's Latest Comments" を稼動させていたんだから、プラグインを停止しちゃダメだよな。
他にも、最近のコメントを表示するプラグインは幾つかあるけど、探すのもメンドクサイしなぁ

と言うわけで、"Brian's Latest Comments" プラグインを改良。
毎回 16 query も消費して最近のコメントを取得するのはスマートじゃないので、キャッシュを持たせて、そちらを表示するようにしました。
コメントが投稿されたり、削除されたときにキャッシュを更新するようにして query 数を減らすことに成功!
リクエストがあればソースを公開しますが、サポートはあまり期待しないでください。

さて、さらにゴニョゴニョして、現在は

  • トップページ 69 queries. → 34 queries.
  • シングルページ 35 queries. → 23 queries.

になりました。
ゴニョゴニョの詳細は、また次回。

おまけ:過去のパフォーマンスチューニング

ちなみに過去のパフォーマンスチューニングとしては、こんなことをやってます。

WordPress サイトのパフォーマンスチューニング (1)」への3件のフィードバック

  1. をかもと 投稿作成者

    yutaka さん、どもです。

    効果抜群ですねぇ :mrgreen:  いいなぁプラグインの改良なんて夢のような話だわ 🙄
    確かに早くなってるわ〜

    シングルページ(投稿エントリ本文)の方は、さらにゴニョゴニョしてあります。
    これについては次回。

    kohaku さん、どもです。

    Brian’s Latest Comments ですが、うちでも使ってる・・・
    キャッシュ持たせるだけで、随分かるくなるもんですね! 😀

    kohaku さんの所とウチだけ妙に query 数が多かったので、共通点は無いかとジーッと見てみたら、最近のコメントの表示方法が Brian’s Latest Comments っぽかったので、目星をつけたらビンゴでした。
    このプラグインは、まず最近のコメントを取得して、そのあとそのコメントのポストIDを使って、ループさせながらコメントを取得してるので query 数が増えちゃいます。
    最初は SQL 文を修正して一発SQLで取ってこようかと思ったんですが、ウチのサーバの MySQL 4.1 では、サブクエリがうまいこと使えなかったので、キャッシュさせることにしました。
    kohaku さんの所みたいに wp-cache を使えば良いんですが、wp-cache はコントロールが難しいんで止めました。

    返信
  2. kohaku

    Brian’s Latest Comments ですが、うちでも使ってる・・・
    キャッシュ持たせるだけで、随分かるくなるもんですね! 😀

    返信
  3. yutaka

    25 queries. 1.920 seconds.
    効果抜群ですねぇ :mrgreen:  いいなぁプラグインの改良なんて夢のような話だわ 🙄
    確かに早くなってるわ〜

    返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください