Djangoのキャッシュを使ってみたが良いなー

今回は、
Djangoの「低水準のキャッシュ API」を使って、
キャッシュを取ることにしてみた。

これ抜群に良いな。
必要な部分(サイトバーやメイン部分の一部など)やオブジェクト丸ごとキャッシュしてやったりと、
色々出来る。

各ユーザーごとにページがある場合なんかは、
そのユーザーごとにキャッシュを取るようにしてあげるなんて事をやってみた。

今回はローカルメモリ上に残すのをやってみる。

まずは、
settings.pyに以下を加える。

CACHE_BACKEND = 'locmem:///'

Djangoオンラインドキュメント和訳に載っていたが、

このキャッシュはマルチプロセスセーフかつスレッドセーフ


良いねー。

次にキャッシュを実際に保存する部分

今回は全てviews.pyで行った。

from django.core.cache import cache

cacheモジュールをインポートする。

後はcacheを使ったり、変更したり削除したりなどしてみる。
仮にユーザー情報をキャッシュに入れてみた。
ユーザー情報は「user_id」から取得出来るのが前提とした。
キャッシュも「user_id」で紐づけてみた。

if cache.get(user_id):
    object = cache.get(user_id)
else:<br />
    object = get_user_object(user_id)<
    cache.set(user_id, object, 3600)[

などしてあげると、
ユーザーのIDで指定したキャッシュがあれば、
それを使用して無ければ、
ユーザーのオブジェクトを取得するメソッド(仮でget_user_objectとした)なんかで取得する。
その取得したオブジェクトをキャッシュに入れてやる。
これだけでOK。

後はキャッシュが要らない場合に削除したい。
そんな時は下記で実現出来る。

cache.delete(user_id)

ってしてあげれば削除出来る。
今回やったもの以外にも

・テンプレートの部分的キャッシュ
・ビュー単位のキャッシュ
・サイト単位のキャッシュ

などもやってみたいので、
そちらも試してみよう。

いやーDjangoがまた好きになるなぁー。

Django のキャッシュフレームワーク
http://michilu.com/django/doc-ja/cache/
Posted at: 
2008/06/19 01:34:00
0 Comments
0 TrackBacks
Tags: 
Django
Trackback: 
http://kishi-r.com/2008/06/19/django%e3%81%ae%e3%82%ad%e3%83%a3%e3%83%83%e3%82%b7%e3%83%a5%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%81%9f%e3%81%8c%e8%89%af%e3%81%84%e3%81%aa%e3%83%bc/trackback/

TrackBacks

まだ登録されていません。

Comments

まだ登録されていません。

Add Comment

Add Comment
人気ブログランキング - kishi-r.com track feed
あわせて読みたい