やっぱりサゴーゾが一番ですよね。こんにちはnojimageです。
今日は、CakePHPでプラグイン内部にcss,js等を持つ場合に、若干のパフォーマンスアップを行うためのシェルスクリプトのご紹介です。
プラグイン内部のcss,jsは、特に対策を行わなければDispatcherを通して出力され、これはかなりのオーバヘッドを伴います。
この対策として、APP/webroot配下にシンボリックリンクを張ることで、.htaccessに記述されているmod_rewriteの設定により直接apacheから出力するようにできます。
2011.04.22追記: Themeにも対応しました。
シンボリックを張るには、プラグイン名がdebug_kitの場合はこんな感じ。
ln -s /var/www/html/plugins/debug_kit/webroot /var/www/html/app/webroot/debug_kit
これは設置時に一度だけやれば済むので、手動でやってもいいんですが、絶対パス指定が面倒だったり、 ln コマンドの引数の順番はどっちだっけ?とか毎回悩む私のような人向けにCakeのシェルコマンドをご用意しました。
Install
上記コードをAPP/vendors/shellsに”ln.php”として保存します。
Usage
プロンプトからcakeコマンドで呼び出してください。
cake ln all
アプリケーション内全てのプラグインとテーマからシンボリックリンクの作成を試みます。
cake ln search
アプリケーション内全てのプラグインからwebrootをもつプラグインとテーマをリストアップします。
cake ln plugin debug_kit
debug_kitプラグインのwebrootシンボリックリンクを作成します。
cake ln theme sagohzo
sagohzoテーマのwebrootシンボリックリンクを作成します。
なお、このスクリプトはCakePHP 1.3.7で動作確認してます。
この程度ならshスクリプトでもよさそうですが、そこはほら、PHPerだから!