www.kokkaitter.com のサイトの裏には、発言をまとめたデータベースがある。アクセスがある度に、そのデータベースを参照してページを生成している。このような手法は頻繁に更新されるサイトを作るとき便利だ。なぜならデータベースを更新すれば、すぐにそれがサイトに反映されるからだ。

ところが、kokkaitter.com は、動的なサイトではない。ページの内容が書き換わるタイミングは、私が議事録からデータをコピペして追加したときだけで、普段はデータベースから読み込んで表示するだけだ。そういう場合、データベースから読み込んで生成したページをあらかじめ作っておいて、アクセスの度にページを生成しないようにすると、より速くページを表示させることができる。

この機能はキャッシュと呼ばれる。 Django では、簡単にキャッシュの機能を利用することができる。

Django にはキャッシュを実装する方法として、memcached を使う方法と、データベースを使う方法と、ファイルシステムを使う方法と、ローカルメモリを使う方法の 3 通りの方法がある。さくらで Django を CGI として動かしている場合、使えるのはデータベースを使う方法と、ファイルシステムを使う方法の 2 つだけだ。このうち、データベースを使う方法を、今回試してみた。Django のキャッシュフレームワークの通りにやったら、簡単にできた。

まず、

python manage.py createcachetable [cache_table_name]

して、キャッシュ用のデータベーステーブルを作る。[cache_table_name]は、他のテーブルと名前がかぶらなければ何でもいい。で、 setting.py

CACHE_BACKEND = 'db://さっき作ったテーブルの名前'

と書く。

次に、今回はビュー単位でキャッシュすることにしたので、view.py で from django.views.decorators.cache import cache_page して、キャッシュを使う関数の前に、 @cache_page(キャッシュの時間(秒)) を書くだけ。たとえばキャッシュのタイムアウトを 1 日に設定するときは、 @cache_page(60*60*24)

これだけ。簡単過ぎる。 DjangoかわいいよDjango

2008.03.24 Mon l Python Django l COM(0) TB(0) l top ▲

日本依存症を日本にいながらローリスクで脱却する戦略 とか 日本でしか生きていけないと将来破滅するリスクがあるので、世界中どこでも生きていける戦略のご紹介 を読んで、「日本がどうなっても生きていけるようにならなくては!」と思っている今日この頃。

でもそうは言っても、日本はいい国であってほしい。というか、いい国にしたい。

でも、どうやったらいい国にできるのかが分からない。「やっぱりみんなで議論すればいいんじゃない?ブログを使って議論すれば、きっといいアイデアが出てくるんじゃない?」程度しか分からない。もし知っている人がいたら教えてくれ!

でもまぁ、とりあえず今は時間があるので、ブログで政治の議論をしやすくなるようなサービスを作ってみよう、と思って作った。それがこれ。こっかいったー。もちろん、ついったーのパクリ。

Python と Django を使った Web サービスを作りたいと思ってたので、習作として作ってみました。まだまだ Django の全機能の半分も使えてないとは思うんですけど、それでもDjango のおかげで簡単に作ることができました。これを作るのにかかった時間は、文字コードの問題で 4 日程度ハマったのを除けば、合計して約 6 時間ぐらいです。ちなみにその 6 時間のうち、データを登録する時間が約 1 時間なので、実質 5 時間ぐらいでできました。DjangoかわいいよDjango

さ、英語の勉強しよっと。今週末は TOEIC だー。

2008.03.20 Thu l 未分類 l COM(0) TB(1) l top ▲

ここ 1 ヶ月の間、ブログも書かずに飲み会ばっかりやっていました。もう早くも年間 100 リットルがかなり怪しくなるぐらい飲んでました。

まぁそれは置いておいて。

飲み会の合間に、さくらインターネットに持っているアカウントを使って、Django を動かして遊んでます。でもこれがなかなか難しい。特に文字コードのあたりでつまづいてばっかりで、あんまり進まなくてイライラしてます。ググったら Dreamhost とか coreserver を使ったら簡単にうまくいくらしいので、そっちに乗り換えようかと検討中です。

というわけで、まだ何も書けることがないんですけど、とりあえず、生存報告ということで。

2008.03.13 Thu l 未分類 l COM(0) TB(0) l top ▲