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

さて、昨日の続きです。

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

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

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

と言っておりましたので、そのゴニョゴニョの部分の説明。

一言で言えば、「投稿の付属情報のキャッシュをWebサーバにファイルとして持つ」プラグインを作りました。
まだまだ改良の余地は有りますが、とりあえず現状の状態で結構満足の行く仕上がりになってます。

このプラグインを稼動させ、キャッシュが作成された後の query数がこちら。

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

確実に減ってますねぇ。いい感じです。

このプラグインが取得しておくキャッシュ情報は、以下のとおり。

  • 投稿のパーマリンク
    テンプレートタグ:the_permalink()相当
  • 投稿のタイトル
    テンプレートタグ:the_title()相当
  • 投稿された時間
    テンプレートタグ:the_time()相当
  • 投稿者の名前
    テンプレートタグ:the_author()相当
  • 投稿者のアーカイブへのリンク
    テンプレートタグ:the_author_posts_link()相当
  • 投稿に付けられたタグのリスト
    テンプレートタグ:the_tags()相当
  • 投稿が属するカテゴリのリスト
    テンプレートタグ:the_category_list()相当
  • contents フィルタ通過済みの投稿本文
    テンプレートタグ:the_contents()相当
  • contents フィルタを通過した際に追加されたフィルターフック
  • WordPress Related Post for Japaneseプラグインが作成する関連記事のリスト

これらの情報を記事ごとに1ファイルとして作成しておきます。

投稿が初めて表示されたときにこれらの情報を取得し、テキストファイルに吐き出しておきます。
で次回表示するときは、そのテキストファイルを読み込んで表示するという仕掛け。
wp_posts テーブルに対しては query が走ってるんですが、それでも contents フィルタ通過後の投稿本文と追加されたフィルタフックをキャッシュで保持しているため、ショートコードなどの contents フィルタを通過する際の変換コストが削減されます。
しかも結構コストがかかっていた "WordPress Related Post for Japanese" での関連記事検索もキャッシュしてくれるので、シングルページで、絶大な威力を発揮。
10 query も減らせました。

し、しかし重大な問題が!
この状態でも、Binsan’s Cafe のトップページの記録 "16 querys" には遠く及ばないのです。
くそぅ、血のにじむような努力をしているのに

と、言うわけで次回は冥府魔道に堕ちます。

9 thoughts on “WordPress サイトのパフォーマンスチューニング (2)

  1. をかもと 投稿作成者

    kohaku さん、どもです。

    http://ocaoimh.ie/2006/10/26/brians-latest-comments-cached/
    こんなプラグインもあるようですが、効果のほどはどうなんでしょうね?

    ソースを見てみました。
    ファイルを作成してキャッシュを保持してますね。キャッシュの有効期限は3600秒で固定。
    なるほど。

    私の改造は、キャッシュはDBに保持します。
    キャッシュの有効期限は定めず、新規コメントが投稿されるか、管理画面でコメントの状態が変更(未承認→承認や、削除など)されるまでキャッシュを保持します。
    以下に置いてありますので、よろしければお試しください。
    http://dl.getdropbox.com/u/110305/brianslatestcomments.zip

    返信
  2. をかもと 投稿作成者

    yutaka さん、J君、どもです。

    そう、拝一刀です。錦ちゃんです。子連れ狼です。
    次回は、きっちりと冥府魔道に堕ちますよ。

    返信
  3. J君

    をかもとさん、冥府・・ですか?
    J君の好きな言葉です。
    このバージョンで一番好きなのは、よろずやきんのすけです。
    f(^−^;ポリポリ

    J君の質問ですが、あいた時間で結構です。
    これからもお願いします。≦(._.)≧ ペコ

    返信
  4. yutaka

    と、言うわけで次回は冥府魔道に落ちます。

    水戸黄門だとばっかり思ってたら、こんどは子連れオオカミね :mrgreen:

    返信
  5. J君

    早速のご回答感謝です。

    デフォルトのメール通知

    納得です。色々テストしていて、あれ?と思ったJ君の所謂テストマンの仕業です。
    仕様なら嬉しいです。

    明日

    よろしければお使いください。

    を入れてみます。
    何でも入れたがりJ君ですので、よろしくお願いします。
    何かありましたら、コメントします。

    返信
  6. をかもと 投稿作成者

    J君、どもです。

    Binsan’s Cafe ですか?何やらドキドキの文言ですね!
    J君の環境でうまくいくのなら、是非にびんさんに勝ちたいと思います。(笑)

    今回のエントリで話したプラグインは、残念ながらウチのサイトでしか使えないような強烈に特殊な作りになってます。
    一般化できるようであれば、公開しますね。
    前回のエントリで話した "Brian’s Latest Comments" であれば、そちらのサイトでも効果あるかも。

    クイックコメントのプラグインを有効にして、更にTwitterを有効・・・
    管理画面からデフォルトのメールの通知を無効にしても、メールが来るのです。

    デフォルトのメール通知が無効になっていても Quick Comments がメール通知します。
    仕様と言うことで、ご勘弁を 😳

    返信
  7. J君

    追記:
    クイックコメントのプラグインを有効にして、更にTwitterを有効・・・
    管理画面からデフォルトのメールの通知を無効にしても、メールが来るのです。
    もしかすると、クイックコメントは関係ないかも知れませんが、少し気になっているのでお知らせまで。
    Twitterとメールで両方から通知がくるので、ちょっと気になった次第です。
    ただ、トラックバックの通知は、メールでしか受けることができないようなので??
    やはり両方から受けるしかないのかな?と思っています。
    つまらないことですが、少し気になっていたので・・・f(^−^;ポリポリ
    お時間がありましたら、師匠!ご教授をお願いします。

    返信
  8. J君

    J君です。
    師匠にはお世話になります。
    Binsan’s Cafe ですか?何やらドキドキの文言ですね!

    J君の環境でうまくいくのなら、是非にびんさんに勝ちたいと思います。(笑)

    返信

コメントを残す

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

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