DjangoでCacheとDjangoのflatpages
Posted on Sun, 01 Feb 2009 10:59:44 +0900
Djangoでキャッシュを利用する
Djangoには標準でキャッシュを利用できるようになっており、 少しの設定でキャッシュの恩恵を受けることができます。 ドキュメント にも記載があるのですが、メモを兼ねて設定方法を記載します。
今回は、 memcached + サイト全体をキャッシュ で動作させます。 環境は、Ubuntu 8.10 + Django1.0です。
まずは、 memcached のインストール。
$ sudo apt-get install libmemcache-dev libmemcache0 python-memcache memcached
$ sudo /etc/init.d/memcached start
そしてDjangoの設定。
CACHE_BACKEND = 'memcached://127.0.0.1:11211/'
MIDDLEWARE_CLASSES = (
'django.middleware.cache.UpdateCacheMiddleware',
:
'django.middleware.cache.FetchFromCacheMiddleware',
)
apache2の再起動で設定完了です。
キャッシュが効いているかどうか見る
簡単なスクリプトを書いてみました。
#! /usr/bin/env python
import memcache
import pprint
c = memcache.Client(['127.0.0.1:11211'])
s = c.get_stats()
pprint.pprint(s)
実行してみて、'get_hits'や'get_misses'が増えていれば問題ないと思います。 実際、私ははじめBACKENDをBACKCNDと間違っていたのですが、 Djangoはエラーとかは吐かないのでこのスクリプトで動いているかどうか 確認しました。
とは言っても、アクセスがそれほど無いので今のところはキャッシュの効果も あまり見えていません。う~ん残念。
flatpagesも利用する
単一ページの運用に flatpages も導入しました。 aboutページ がそれにあたります。
こちらもキャッシュと同様、簡単に設定できます。 下記のとおりにsettings.pyを修正し、manage.pyでsyncdbします。 templatesディレクトリにflatpagesディレクトリを作成し、 その下に default.htmlを作成します。
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
:
:
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', # 一番最後に追加
)
INSTALLED_APPS = (
'django.contrib.auth',
:
'django.contrib.flatpages', # 一番最後でなくてもよい
)
{% extends "base.html" %}
{% load markup %}
{% block content %}
{{ flatpage.content|restructuredtext }}
{% endblock content %}
flatpagesとadminだけでも、ページ管理が楽になりそうですね。 Djangoやっぱりいいなぁ。