tkm9

自分向け技術メモ(?)

json の view を Dalli(memcached) で キャッシュする

アクションの結果をキャッシュしたかったんだけど最近の rails って Action cache って無くなっちゃってたよね?
ということで代わりに Dalli に json をキャッシュさせてみたメモ。

環境

cache する

text = render_to_string( action_name, { formats: [:json], handlers: [:jbuilder] } )
Rails.cache.write( KEY, text )

render の内容を取得するには render_to_string を使う。
で、それを Rails.cache.write してキャッシュする。

cache した json をrender

response.headers['Content-Type'] = 'application/json; charset=utf-8'
render :text => Rails.cache.read( KEY )

json だと、render 時に Content-Type をセットしてやる必要がありました。