2012年11月10日

cakephp2.2でREST APIにview cacheが効かない

blogramランキング参加中!

CakePHP2 実践入門 (WEB DB PRESS plus)

新品価格
¥3,024から
(2012/11/10 11:44時点)



cakePHP1.3からcakephp2.2にREST APIを移行する
という記事を書いたが、さらに残念な点が発覚した。

以下、内容

間違いがあったら、教えていただけると幸いです。

とりあえずはcakephp2.2のキャッシュを有効にする。
core.phpでcacheを有効にする
Configure::write('Cache.check', true);
タイムアウトを設定
var $cacheAction = array(
'index' => '5 minutes',
);

上記の設定でview cacheが動くかと思ったら動かない。
cakephp2.2.2
cakephp2.2.3
cakephp2.1.5
cakephp2.1.0
cakephp2.3.0
のバージョンだとview cacheが効かなかった。
ただ、cacheが効かないのは、
RESTのAPIのみで普通のwebページはview cacheが効く。

また、以下ならRESTのAPIも含めてうまくキャッシュされた
cakephp2.0.6

(´・ェ・)どういうことでしょうか???????
cakephp2.1.0から仕様かわったぽいなぁ。。。。。

予想としては、xml用のdefaultのレイアウト
Layout/xml/default.ctp
が呼ばれていないことがcacheされない理由っぽい。
cakephp2.0.6なら呼ばれているので。
ちなみにxml/default.ctpがなくても2.0.6ならcacheされます。

cakephp2.2で無理矢理
$this->layoutしてもなぜかlayoutは呼ばれなかった。
だから普通のviewとして扱うために
parseExtensions('json', 'xml');
をコメントアウトしてみたら、
Layout/default.ctp が呼ばれてキャッシュされた。
なのでlayoutが呼ばれないとキャッシュされないってのあたりっぽいと見てる。
ただ、/〜.xmlにすると引数に〜.xmlと拡張子まで渡ってくるのでちょっと無理。

というわけでxmlの出力だとviewが呼ばれないから
view cacheが効かないような気がしてます。
さてさてこれどうやったらよいですかね(・ェ・`)
仕様でcacheされなくなったのか
バグなのか
仕様が変わってcacheのやり方が変わったのか

とりあえずは
2.0.6で2系移行を済ますがよさそうかな。
これからテストして問題なければこれでいこうと思います。
あるいは、フレームワークに頼らずキャッシュするか。。。

もう、別のフレームワーク使いたくなってきた(・ェ・`)
だけど覚えるの時間かかるし、
BEはユーザに見えないからあんまり気乗りしないんですよね。。。。


タグ:cakephp
posted by マスタカ at 11:51 | Comment(0) | TrackBack(0) | プログラミング | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。