DjangoでCacheとDjangoのflatpages

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やっぱりいいなぁ。