odeの開発メモ日記

プログラマーやってます。今までの道のり ポケコンbasic→C(DirectX5 ネットやろうぜ)→Perl(ちょろっと)→Java→C#→Ruby→Android(Java)

cache_fuのconfについて。memcached.yml

(ちなみに全部の説明はありません。適当にピックアップしました。)

#trueにするとsessionの格納先がmemcacheになります。
sessions: truefalse

#セッションのmemcacheサーバーを別にしたい場合は指定する。
#一緒でいい場合はfalseを指定(デフォルト)
session_servers: 192.168.xxx.xxx:11211

#フラグメントキャッシュの格納先をmemcacheに切り替える。
fragments: truefalse

#trueにすると早くなるっぽい。
#その代わりruby以外のクライアントとの互換性がなくなるっぽい。
#hashの実装を変更して実現してるみたい。
fast_hash: falsefalse

#trueにするとfast_hashするより早くなるっぽい。
#その代わりfast_hashより互換性の条件が悪くなり、
#同じruby同士でもos等のアーキテクチャが違うってもだめっぽい。
#hashの実装を単純なrubyのhashにしているみたい。
#ってことは恐らくアーキテクチャによってhashの実装が違うんでしょう。
#他アプリと連携しないで複数サーバーも同じOSを使うならこれはonにして
#よいんじゃないでしょうか。
fastest_hash: truefalse

sessionsをtrueにした場合は下記を適用しましょう。

  • application.rbのprotect_from_forgeryの:secretのコメントを外す
  • deveropment.rbで有効期限を設定
    • ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.merge!-({'expires' => 30.minute })


ちなみにデフォルトで用意されてるmemcached.ymlは
:defaultsとdevelopment:の両方でsessionとfragmentsをfalseにしてあるので
:defaultsだけtrueにしても反映されません。(動かねーじゃんと一度やっちゃいました)