Posted by をかもと at 2009年7月22日 水曜日

この数週間で、私がリリースしている WordPress 用プラグインを幾つかアップデートしました。
一応、簡単にご報告。
アップデートしたのは、以下の3つのプラグイン。

  • Head Cleaner Ver.1.2.0
    WordPress サイトの <head> の中身と、フッタ領域を整形しなおします。
  • WP-lightpop Ver.0.8.0
    画像、動画をハイライト表示(いわゆる lightbox 風)する。
  • Commenters Info Ver.0.5.1
    コメント投稿者の各種詳細情報を表示する。

個々のプラグインの更新内容は、大体以下のような感じです。
続きを読む

拙作のプラグイン Head Cleaner と、WP Super Cache を同時に有効化している場合、多少問題があります。
Head Cleaner では、JS、CSS のキャッシュを wp-content/cache/head-cleaner フォルダに作成するのですが、WP Super Cache でキャッシュファイルを削除すると、このフォルダも削除されてしまいます。
# これは Twiconwp-kougabu でも発生する問題です。

で、これに対処するには、今のところ wp-super-cache/wp-cache-phase2.php の 368 行目を以下のように修正するしかありません。

	$protected_directories = array( $cache_path . '.htaccess', $cache_path . 'meta', $cache_path . 'supercache', $cache_path . 'head-cleaner' );

ちなみに、Twicon、wp-kougabu も導入している場合は、以下のように修正すればおっけです。

	$protected_directories = array( $cache_path . '.htaccess', $cache_path . 'meta', $cache_path . 'supercache', $cache_path . 'head-cleaner', $cache_path . 'twicon', $cache_path . 'wp-kougabu' );

この辺 WP Super Cache が、wp-content/cache 内のフォルダ・ファイルを問答無用で削除するという凶悪仕様のため、Head Cleaner (Twicon) 側では対処の使用がありません。
WP Super Cache が、自分が作ったフォルダ以外は削除しないようになるか、せめて $protected_directories を他のプラグインから指定できるようにしてくれれば、対処のしようがあるんですが

Posted by をかもと at 2009年2月28日 土曜日

WordPress Plugin には、WP-Cacheや、WordPress Super Cache と言った高速化を実現するためのプラグインが多数あります。
これらのプラグインは、本来は動的に生成している WordPress のコンテンツをサーバ上にキャッシュしておいて、サーバ負荷を減らし、クライアントからのリクエストに対して、素早く返答しようというモノです。
つまりは、サーバ側の処理(バックエンド)の高速化。

Head Cleaner (仮) は、これらのプラグインとは違い、クライアント側の処理(フロントエンド)を高速化しようと言うのが狙いです。
多分、今まで無かったタイプの高速化プラグインでは無いでしょうか?
この辺のフロントエンドの高速化の解説は、以下のエントリが詳しいです。

これらで、提案されている基本的な技法は

  • クライアント側のキャッシュを活用したり、無駄な HTTP リクエストを減らして、ネットワークボトムを解消しよう
  • ページレンダリングに関連するもの(CSS)は先に読み込ませ、関係ないもの(JavaScript)は後で読み込んで、見た目の表示を速くしよう

と言うことになります。

では、 Head Cleaner (仮) の高速化技法について、当サイトのトップページを例に検証してみましょう。
続きを読む

Posted by をかもと at 2009年2月28日 土曜日

さて、先日から「Head Cleaner (仮)」を、夜半になると Twitter 上で公開しては修正、機能アップを繰り返してきたのですが、盛り込みたかった機能もかなり盛り込めたので、これより熟成期間に入ります。
で、熟成期間に入る前に今までの経緯をまとめておきます。
まずは、このプラグインの基本的な動作原理。

  1. WordPress のテーマテンプレート inex.php や single.php に <?php get_header(); ?> って記述があると思いますが、これが呼ばれた時に動作を開始します。
    この時は、まだ ob_start で、バッファ取得開始するだけ。
  2. header.php の <?php wp_head(); ?> が呼ばれた時点でバッファ取得を終了し、書き出された文字列を解析して整形します。

やってることは、これだけ。
まだまだ開発途上のプラグインですが、人柱になっていただいている方々、ありがとうございます m(_ _)m
不具合は色々と出てきましたが、私は元気です。

さて、では以降は今までの経緯のまとめ。
続きを読む

Posted by をかもと at 2009年2月20日 金曜日

WordPress にプラグインをガンガンと突っ込んでいくと <head> 部に、JavaScript やら CSS やらが、ドンドン追加されて、カオスなことになってしまいます。
そんな状態の自サイトを「YSlow for Firebug」で診断してみると、とても低いスコアになったりしてガックリ来るわけです。
プラグインを外したりしたくなかったりするので、チマチマと修正したりして使っていたんですが、プラグインのバージョンアップのたびに修正するのも面倒です。

そんな折、「WordPress Head Cleaner」というプラグインを見かけました。
これは、ひょっとして <head> 部を自動でキレイにしてくれるのか?と期待してダウンロードしてみたんですが、ソースを見てガッカリ。
ついカッとなって、こんなプラグインを作ってしまいました。

ダウンロード

Head Cleaner@WordPress Plugins
または
Head Cleaner (最適化&高速化)@JSeries

[2/24 6:00 追記] コメント蘭での、ゆりこさんからの指摘により、 Safari では拡張子が .gz の css, JavaScript を認識できないことが判明。
多分 「.gz」の Content-Type が 「text/javascript」 or 「text/css」 になっていないからだと思われます。
Ver.0.3.2 以降で、Safari に対しては gzip 圧縮されたファイルを転送しないように修正しました。
なお IE, Firefox, Opera, Chrome では、問題無いようです。

[2/25 8:00 追記]Ver. 0.4.0 から CSS もすべて結合することができるようになりました。
# ただし、デフォルトでは OFF になっています。
CSS 内の画像ファイル等への相対パスはすべて絶対パスに置き換えます。
制限事項としては、media 属性を気にせずにすべて結合し、media="screen" にしてしまうため、想定外の表示になる可能性もあります。
この辺は、後々修正します。

[2/26 12:30 追記]Ver. 0.5.x から、CSS と JavaScript をそれぞれ CSSTidyjsmin-php で圧縮できるオプションを付けました。
また、コメント欄でのゆりこさんからの指摘により、ユーザエージェントに「AppleWebKit」を含むブラウザ(ただし chrome は除く)からのリクエストがあった場合は .gz ファイルを転送しないように修正しました。
あと、簡単な注意書きを書いた「readme_ja.txt」を同梱したので、読んでやってください。

[3/4 18:30 追記]正式版のリリース準備版を公開しました。
今まで、php ファイルを直接修正していた各種設定は、管理画面の「設定」>「Head Cleaner」から行えます。
また、競合が報告されているプラグインと、その対処法について「readme_ja.txt」に書いてあります。
そちらも、ご一読ください。

[3/5 23:00 追記]正式版リリースしました。
続きを読む