テーマで叩いたAPIのキャッシュについて

2014年10月10日 at 18:07

あまり開発やPHPのことに詳しくないので、見当違いでしたらすいません。

現在、テーマテンプレート上にて、FlickrのAPIを叩くPHPを書いています。
なんとか動きはするのですが、取得するデータ(テキスト)の数が多く、ページの表示まで時間がかかっています。

頻繁に更新されるデータではないので、一度キャッシュさせようと思うのですが、
これはテーマ側でキャッシュさせる仕組みを開発する必要があるのでしょうか?

以下の選択肢があるのかも? と思って質問します。

1)テーマ側でキャッシュさせるPHPを書く
2)concrete5にキャッシュの仕組みがあるので、それを使う(helper?)
3)管理画面のキャッシュにチェックが入っていれば、自動的にキャッシュされる

3であれば、運用の時点で何も考える必要はないな〜 と思っているのですが、いかがでしょう?

タグ:

Re: テーマで叩いたAPIのキャッシュについて

2014年10月10日 at 21:30
テーマでやると、フルページキャッシュしか効きません。ただ、フルページキャッシュで良ければ、ログアウトして閲覧する際は超高速になります。ページ内に動的なブロックがあるとフルページキャッシュが作られませんので、たまに困ります。

ブロックで作れば、ブロックキャッシュが効きます。ブロックキャッシュはブロック単位で表示結果をキャッシュしますので、フルページキャッシュが効かない場合でも高速化できます。Designer Contentで適当にブロックを作ってから、controller.phpのキャッシュ設定をいじればOKです。

http://github.com/concrete5/concrete5/blob/master/web/concrete/core/controllers/blocks/content.php#L17

$btCacheBlockRecord : ブロックの設定をキャッシュするかどうか。普通はtrue
$btCacheBlockOutput : ブロックの出力結果をキャッシュするかどうか。ページリストやコメント欄など常に更新がある動的なものはfalse
$btCacheBlockOutputOnPost : フォームの送信があったときにキャッシュするかどうか。最初の表示はキャッシュされていて、送信ボタンを押した際の表示はキャッシュされない。完全にフォーム用の設定項目。
$btCacheBlockOutputForRegisteredUsers : ログインしているユーザーにもアウトプットキャッシュを表示するかどうか。キャッシュしたいがログインユーザーによって表示が変わる場合があるとき
$btCacheBlockOutputLifetime : アウトプットキャッシュの有効期間。秒単位
 

Re: テーマで叩いたAPIのキャッシュについて

2014年10月11日 at 12:03
ありがとうございます。
いずれ折を見てブロック化しようと思ってたので、これを期にブロックにしちゃいます。

Designer Contentは、オリジナルブロックをイチから作る時にも使えるんですね。
目からウロコです!