Web アプリケーションって機能を増やそうとすると、それに比例してページが増える。
ページ数が増えても簡単に管理できるソフトがあったらいいなー
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
日本依存症を日本にいながらローリスクで脱却する戦略 とか 日本でしか生きていけないと将来破滅するリスクがあるので、世界中どこでも生きていける戦略のご紹介 を読んで、「日本がどうなっても生きていけるようにならなくては!」と思っている今日この頃。
でもそうは言っても、日本はいい国であってほしい。というか、いい国にしたい。
でも、どうやったらいい国にできるのかが分からない。「やっぱりみんなで議論すればいいんじゃない?ブログを使って議論すれば、きっといいアイデアが出てくるんじゃない?」程度しか分からない。もし知っている人がいたら教えてくれ!
でもまぁ、とりあえず今は時間があるので、ブログで政治の議論をしやすくなるようなサービスを作ってみよう、と思って作った。それがこれ。こっかいったー。もちろん、ついったーのパクリ。
Python と Django を使った Web サービスを作りたいと思ってたので、習作として作ってみました。まだまだ Django の全機能の半分も使えてないとは思うんですけど、それでもDjango のおかげで簡単に作ることができました。これを作るのにかかった時間は、文字コードの問題で 4 日程度ハマったのを除けば、合計して約 6 時間ぐらいです。ちなみにその 6 時間のうち、データを登録する時間が約 1 時間なので、実質 5 時間ぐらいでできました。DjangoかわいいよDjango
さ、英語の勉強しよっと。今週末は TOEIC だー。
ここ 1 ヶ月の間、ブログも書かずに飲み会ばっかりやっていました。もう早くも年間 100 リットルがかなり怪しくなるぐらい飲んでました。
まぁそれは置いておいて。
飲み会の合間に、さくらインターネットに持っているアカウントを使って、Django を動かして遊んでます。でもこれがなかなか難しい。特に文字コードのあたりでつまづいてばっかりで、あんまり進まなくてイライラしてます。ググったら Dreamhost とか coreserver を使ったら簡単にうまくいくらしいので、そっちに乗り換えようかと検討中です。
というわけで、まだ何も書けることがないんですけど、とりあえず、生存報告ということで。