RSS

CakePHP Advent Calendar 2011 12/09

09 12月

こんにちは。本日12月9日担当の@yashioです。
来週はいよいよcake勉強会and忘年会ですね(∩´∀`)∩ワーイ皆さんにあえるの楽しみにしています。

さて今回は、1.3系で・・しかも出尽くされていると思いますがViewキャッシュ導入について紹介したいと思います。
いろいろな方がこちらは紹介されていますが、私でもできるヨ!ってことで生暖かく見てください。
頑張って図つけたわ。。これが一番時間かかったとか・・・・。

・登録者向けのサービスだが、ログイン前にランディングページなどの静的なページを多用している
・できるだけ、ウェブサーバーへの負荷を軽減したい

などの時にぜひ。

レシピ:cake1.3、 https://github.com/mcurry/html_cacheからダウンロードしてきた一式

手順その1:
https://github.com/mcurry/html_cache からファイルをダウンロードしてapp/plugins/html_cache/の下につっこむ。

手順その2:
App::import(‘core’, ‘File’); をapp_controller.phpのbeforeFilterに記述する(これ重要です。忘れてすごい悩んだ・・)
特定のコントローラーだけに処理をさせたい場合は、該当するcontrollerのbeforeFilterに記述が望ましいでしょう。

手順その3:webroot/cache配下に静的に出力したいファイルのパスでディレクトリをつくる。app/webroot/cache/controller名/action名/のような。

手順その4:
3で作成したディレクトリにアクセス権限をつける。実際にここに静的なHTMLファイルが作成されます。

手順その5:
静的表示をしたいコントローラー、のアクションに、

$this->helpers[] = ‘HtmlCache.HtmlCache’;

を追記する。
※妙な怒りのデバッグが入っていますがおきになさらずに。ちゃんと表示されます。

これは、3の手順で作成したディレクトリのパスにcontroller,actionが一致している必要があります。

手順その6:
webroot直下にある/htaccessを表1.のように変更する(簡単に言うと、webroot/cache配下に該当のファイルがある場合にはそちらを優先的参照する。ない場合は通常通りフレームワークのルールに則り、/controller/actionへ飛ぶ。)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^GET$ #追加部分
RewriteCond %{DOCUMENT_ROOT}/cache/$1/index.html -f #追加部分
RewriteRule ^(.*)$ /cache/$1/index.html [L]  #追加部分
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

手順その7:
美味しくいただく。 さあ該当ページにアクセスしてみましょう。ファイルが作成されない場合はパーミッションの確認をしてください。
3で作られたディレクトリにファイルがつくられていますか?日付を見てみてくださいね。
この場合、controllerも通らないので不必要なロードがされないので結構表示速度を体感できるのではないかと思います。
(コンテンツにもよるでしょうが)


試しに削除してもう一度作成してみましょう。【やったー!】
注意すべきことはctpファイルの中身に変更が合った場合などは、

こちらにあるキャッシュを一度削除しないと新しいファイルが作成されません。

そのため頻繁に変更するファイルに関してはあまり向かないかもしれませんが、キャッシュで表示する方が
明らかに表示速度は上昇しますので、お手軽にできますし皆さん、試してみてはいかがでしょうか。

さて、明日はおなじみ@mon_satさんです。よろしくおねがいしまーす!

広告
 
1件のコメント

投稿者: : 12月 9, 2011 投稿先 cakephp

 

CakePHP Advent Calendar 2011 12/09」への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

 
%d人のブロガーが「いいね」をつけました。