サイト運営」カテゴリーアーカイブ

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

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

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

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

WordPress 2.6.1 へのアップデート

WordPress 2.6.1 がリリースされたのでアップデート。
今回のアップデートはバグフィックスが主とのこと。
導入済みのプラグインでは、特に問題は発生しなかった。
一応、ざっと確認して問題は無さそうだが、何かあれば教えてください m(_ _)m
# と言っても、しばらく出張のため、サイト管理はできないので来週以降の対応になるのだが

JavaScript 読み込みの並列化

JavaScript の並列読込Safari, IE8 以外のブラウザでは JavaScript の読み込み中は、画像や CSS、他の JavaScript ファイルなどの読込処理がブロックされる。
これをDOM経由で動的にロードすると、並列で読み込まれるようになりますよと言うお話。
元ネタは、マイコミジャーナルの「JavaScript読み込みブロック回避でページ表示を高速化する方法」と言うエントリ。
右図が、当サイトに実装した際の Firebug のネットワークモニタ結果(JavaScriptのみ)。(クリックで拡大されます)
確かに並列読み込みされている。

JavaScript の並列読込処置前比較のために実装前の Firebug のネットワークモニタ結果(JavaScriptのみ)も載せておきます。
一つの JavaScript が読み込み終わるまで、次の JavaScript の読み込みが待ちになっている様子が分かりますね。
読み込んでいる JavaScript ファイルが少ないのは、並列読み込み用に使った Yahoo! UI Library の Get Utilityを、こちらでは読み込んでいないことと、自サイト内の Javascript を動的結合しているため。
# 読み込みファイル数が少ない実装前の方が、総読み込み時間が多くなっている。
続きを読む

WordPress 2.6 へのアップデート

WordPress 2.6 日本語版が出た記念にアップデート。
プラグインで修正が必要なものは特に無かった。
# 自作プラグインは、ちょこっと手を入れてますが (^^;

問題なのは my-hacks.php。強烈に弄り回しているので、修正に手間がかかりました。
今回 wp-include/script-loader.php が結構変更されたので、それを使っている hack の修正がほとんど。
続きを読む

WP2.5に入れているプラグイン10選

[TB] WP2.5に入れるプラグイン10選 – MMRT daily life
どこかで見たような企画です。そうあれは、ちょうど2年前。交流会用のネタでした。めっきり見なくなったトラックバック企画リターンズ。しかももうすぐWP2.6が出そうですが、そんなことは知ったこちゃありません。

と言うわけで、Masayanさんの企画に乗っかって、ウチのサイトで使っているプラグインから外せないモノを10個選んでみたよ。
続きを読む

WordPress 2.5.1 へのアップデート

2.5系で初のセキュリティフィックスが出た記念に WordPress 2.5.1 にアップデートしました。

幾つかのプラグインはアップデートが必要になったが、概ね問題なし。
Popularity Contest だけが、正常に動作しなかった。
とりあえず、作者サイトのリンクから辿った SVN Repository に置いてあった 1.3b4 にバージョンアップしたら動作した。
正式な配布開始までは、これでしのごう。

他のプラグインは、Geo Mashup 以外は 2.5 対応のモノがあったので、バージョンアップ。
幾つかのプラグインのアップデートには自動アップデート機能を使ってみたが、楽チンだ。

WordPress での日本語スラッグについて

WordPress でパーマリンク構造に %postname% を含めた場合、%postname% が投稿スラッグで置き換えられる。
投稿スラッグを指定しないと、日本語タイトルを urlencode したものが %postname% として使用される。
 例: https://dogmap.jp/2008/03/25/%e6%b7%b1%e6%b3%a5%e4%b8%98%e5%a5%87%e8%ab%87/

%e6などのように特定の文字を "%" と 16 進数字 2 つを用いて変換する処理の事をパーセントエンコーディングと言い、URI の一般的構文を定めた RFC3986 にも記されている
以下、RFC3986 邦訳の抜粋。

パーセントエンコーディング{percent-encoding} メカニズムは、オクテットの対応する文字が認められた文字の範囲外にある、あるいは構成要素の中で区切り氏として使用されている場合に使用される。パーセントエンコードされたオクテットは、パーセント文字 "%" と、そのオクテットの数値を表している二桁の 16 進数字から成る三重語としてエンコードされる。例えば、"%20" は 2 進オクテット "00100000" (ABNF: %x20) についてのパーセントエンコーディングであり、US-ASCII のスペース文字 (SP) に対応している。 Section 2.4 は、パーセントエンコーディングとデコーディングが適応される時について記述している。
pct-encoded = "%" HEXDIG HEXDIG
大文字の 16 進数字 'A' から 'F' は、小文字の 'a' から 'f' とそれぞれ等価である。二つの URI のパーセントエンコードされたオクテット内で使用される 16 進数字の大文字・小文字のみが異なる場合、それらは等価である。整合性を持たせるため、URI の生成を行うもの{producers} や正規化を行うもの{normalizers} は全てのパーセントエンコーディングについて大文字の 16 進数字を使用すべきである。

このパーセントエンコーディングされた URI だが、WordPress ではすべて英小文字になっている。
続きを読む

WordPress 2.5

昨日の話だが、WordPress 2.5 の日本語版がリリースされた。
とりあえず、こっそり運営しているもう一つのサイトだけバージョンアップして様子見。

使用しているプラグインの中では Popularity Contest だけが正常に動作しなかった。
ただし、作者も把握しているようなので、直に修正版が出るだろう。

私が作成して WordPress Plugins/JSeries で公開しているプラグインについては、VideoPop+ 以外は、確認取れました。
WordPress2.5 からは、ビデオや音声ファイルといった画像ファイル以外のメディアも管理する機能が WordPress 本体についているようなので、VideoPop+ の動画ファイル管理機能を省いてポップアップ表示機能だけにするかも。
でも、それだけだったら WP-lightpop でフォローできるなぁ。
とりあえず、Videopop+ の今後の方向性は要検討ですね。

WordPress 2.3.3 でフィードの日付がおかしい

コアソースを改変すると、WordPress のアップデートが面倒になります。
以下にコアソースを修正しないでもフィードテンプレートを変更する方法をエントリしてありますので、そちらを参照してください。 (追記: 2009年11月10日)

各種フィード用テンプレートの変更 : dogmap.jp

犬小屋にて – Feed 配信がどうもおかしい。」を読んで気づいたのだが、WordPress 2.3.3 で配信されているフィードの日付がおかしい。
で、ソースを見てみたところ mysql2date() に渡している第1引数がおかしい。
これは、PHP の date() 関数に渡す日付文字列の書式を与えなければならないのだが、Wordpress のソース上では 'D, d M Y H:i:s +0000' となってしまっている。
GMT との時差をセットしたいのであれば 'D, d M Y H:i:s O' (最後はアルファベット大文字のO) にしなければならない。

修正が必要なファイルは wp-includes/feed-rss.php, wp-includes/feed-rss2.php, wp-includes/feed-rss2-comments.php の3ファイル。
修正箇所は、以下の4箇所。
#他にもあるかもですが (^^;;

feed-rss.php(13):	<lastBuildDate><?php echo mysql2date('D, d M Y H:i:s O', get_lastpostmodified(), false); ?></lastBuildDate>
feed-rss2.php(20):	<pubDate><?php echo mysql2date('D, d M Y H:i:s O', get_lastpostmodified(), false); ?></pubDate>
feed-rss2.php(29):	<pubDate><?php echo mysql2date('D, d M Y H:i:s O', get_post_time('Y-m-d H:i:s', false), false); ?></pubDate>
feed-rss2-comments.php(42):	<pubDate><?php echo mysql2date('D, d M Y H:i:s O', get_comment_time('Y-m-d H:i:s', false), false); ?></pubDate>