Blog Joomla!の Cache
昨日ある問い合わせがあってCacheのことでJoomlaのソースを眺めていました。
Joomla!のCacheは、パーツごとにCacheファイルを作成し、それをパーツごとに読み込むようになっているようです。たとえば記事なら記事ごとにファイルが作成されます。モジュールならモジュールごとに。そうすることのメリットは、Cacheされては困るパーツは、Cacheさせないようにすることができるからだと思います。たとえば、このサイトで使用している!JoomlaCommentもその一つですが、Cacheされてしまうと投稿した内容はすぐに反映されません。明示的にCacheをクリアするしかありません。また、このサイトで配布しているPluginの中でもJavascriptをヘッダーに出力しているもの(SyntaxHilighter, CodePress Plugin, GreyBox)は、Cacheに対応していません。というより、Joomla!のCacheがヘッダーとともにCacheしないからです。その理由もわかります。パーツごとに管理しているため、Cacheしないパーツがヘッダー内の出力を変更することを考慮しているからだろうと想像します。Pluginは、記事内の設定された文字により、ONになります。Cacheから読み込まれた場合はPluginを通過した後の記事となるためPlugin自体を通過しません。よってヘッダーには出力することができません。
サードパーティーのCacheエクステンション(ヘッダーを含めすべてをCacheしてくれる。)をひとつ試してみましたが、すべてのエクステンションに対応しているわけでは無いのでサイトで使用しているエクステンションによっては、自分で対応するように工夫しなければなりません。このサイトではCacheはオフにしていますが、Cacheの応答性を考えるとやはり対応していかなければならないと考えています。
そこで対応の方法を考えてみました。
- Joomla!のコアを変更してしまう。
ソースを詳細に見ているわけではないので、もしかしたらそうできるように用意されているかもしれない。 - サードパーティーのCacheエクステンションを使う。
今回試したエクステンションは、うちのPluginはすべて正常動作していました。まるごとCacheされるので当然といえば当然ですが。
と、そうしなくても簡易対応ならできます。
- CacheがONならヘッダー内に出力せず、記事内にタグを出力。
記事内にJavascriptや、CSSを出力するわけです。(あまり好きではないですが・・・さんざんGoogleのモジュールを作成しておいて何を言うって感じですか・・・)
対応していないPluginは、次のバージョン(マイナー)で簡易対応するつもりです。
XML-RPCですが、Joomla!1.5ではどうもbloggerAPIのみの対応っぽいですね。他のAPI対応の動きは盛んなようですので最終的にはサードパーティーからになるかもしれませんが、公開されるような気はします。私も密かにつくりかけてたり・・・。
日時の文字化け
そういえば、記事の日時がローカルテストサーバーのJoomla!1.0.13でいつも文字化けしていたことを放置していました。
2007/12/07 Friday 08:01:00 ???? (?W????)
こういうの見たことありませんか?
以下を変更してみました。
これは、Windowsサーバーでは発生するようです。プラットホーム依存ぽいです。Ubuntuでは、
2007/12/07 金曜日 08:01:00 JST
などと表示され、正常です。
ROOT/includes/joomla.php
を
のように変更してみました。
すると、
2007/12/07 Friday 08:01:00 東京 (標準時)
に変わりました。あれれれれこれって・・・はじめて見る気がするのは私だけでしょうか(いつも表示させていないからか?)・・・
SJISの部分や、行番号(変更したりで)は、環境により異なるかもしれません。
また、表示の仕方を変更したいときや、表示するものを変更したい場合は、
ROOT/language/japanese.php
をたとえば、
のようにすれば
2007/12/07 Friday
となります。書き方は、http://jp.php.net/strftimeのパラメータ項を参照してください。
文字化けな方は、お試しあれ
早速テストサーバーのJoomla!1.5をRC4にアップグレードしてみた
Myサーバー(Ubuntu)のRC3(実は、RC3だったかRC2だったか定かでない。)をRC4にアップグレードしました。
本家には下記のように書いてあった。
- Backup all files; backup your database.
- Delete all Joomla! core files, but leave any third-party extension files in place, including your configuration.php file.
- Upload/copy contents of RC4 package.
- Execute the MySQL commands to be found in /installation/sql/mysql/diff.sql to implement the necessary database changes.
- Delete the entire /installation directory.
フムフム...
バックアップしてから・・・面倒だからやらない。
configuration.phpと後でインストールしたエクステンションのファイルを残してすべてのファイルを削除。
サーバーのRCのルートにJoomla-1.5RC4.zipを置いて
unzip Joomla-1.5RC4.zip
上書きのメッセージがでるが、Yes。
diff.sqlをインポートしたらいいのか?・・・中を覗いてみるとRC1 to RC2など他のバージョンの物もあるようだ、危ない危ない。うちのは、たしかRC2からRC3にしたような気がしたがいろいろあって覚えていない。ですが、幸いRC2 to RC3は無かったので
RC3 to RC4の部分のみをコピーし、phpMyAdminでRCのデータベースを開き、SQLメニューからテキストエリアに貼り付け、実行。
installation フォルダを削除。
管理画面に入り、System Infoを開きパーミッションを確認。新調されたフォルダは、すべて赤になっている。
パーミッションを変更。
すんなり完了。テストしていたエクステンションも何事もなく動いています。































