Django でのキャッシュ活用方法を学び、パフォーマンスを向上させるテクニックを解説します。
Django で大規模な Web アプリケーションを開発すると、ページのロード時間やデータベースの負荷が問題になることがあります。
このような問題を解決するために、Django では キャッシュ(Cache) を活用してパフォーマンスを向上させることができます。
本記事では、Django のキャッシュの基本から、実践的な活用方法までを解説します。
Django では、以下のキャッシュバックエンドを利用できます。
キャッシュの種類 | 説明 |
---|---|
メモリベース (locmem ) | ローカルメモリに保存(単一プロセス向け) |
ファイルベース (filebased ) | ディスク上のファイルをキャッシュとして使用 |
データベース (db ) | キャッシュをデータベースに保存 |
Memcached (memcached ) | 高速で分散可能なキャッシュシステム |
Redis (redis ) | 高速なインメモリデータストア |
✅ ポイント
locmem
や filebased
を使用。memcached
や redis
を推奨。以下のように settings.py
でキャッシュバックエンドを設定します。
PYTHONCACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 'LOCATION': 'unique-snowflake', } }
PYTHONCACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.redis.RedisCache', 'LOCATION': 'redis://127.0.0.1:6379/1', } }
✅ ポイント
redis://127.0.0.1:6379/1
は Redis のデータベース 1 を使用 することを意味します。memcached
を使う場合は django.core.cache.backends.memcached.MemcachedCache
を指定。Django では、cache
オブジェクトを使ってキャッシュを設定・取得できます。
PYTHONfrom django.core.cache import cache # データをキャッシュに保存(タイムアウト 60 秒) cache.set('my_key', 'キャッシュされたデータ', 60) # キャッシュからデータを取得 value = cache.get('my_key') print(value) # → 'キャッシュされたデータ'
✅ ポイント
cache.set('key', 'value', timeout)
でデータをキャッシュ。cache.get('key')
でデータを取得。特定のビューをキャッシュする場合は @cache_page
デコレーターを使用します。
PYTHONfrom django.views.decorators.cache import cache_page @cache_page(60 * 15) # 15分間キャッシュ def my_view(request): return HttpResponse("このページはキャッシュされています。")
✅ ポイント
@cache_page(秒数)
でページを キャッシュ し、無駄なリクエストを減らせる。Django では、テンプレートの一部をキャッシュすることも可能です。
HTML{% load cache %} {% cache 600 sidebar %} <div class="sidebar">サイドバーのコンテンツ</div> {% endcache %}
✅ ポイント
{% cache 秒数 'キャッシュキー' %}
を使用すると、特定のテンプレートブロックのみキャッシュ可能。Django ORM の結果をキャッシュすることで、データベースの負荷を減らせます。
PYTHONfrom django.core.cache import cache from myapp.models import Item def get_items(): items = cache.get('items_cache') if not items: items = list(Item.objects.all()) cache.set('items_cache', items, 300) # 5分間キャッシュ return items
✅ ポイント
cache.get('key')
でキャッシュを取得。cache.set()
でキャッシュ。CACHES
設定で バックエンド(Redis, Memcached, File, DB など)を指定 できる。cache.set()
や @cache_page
で データやページをキャッシュ し、不要なクエリを削減。当サイトの情報は、一般的な参考情報として提供しております。
正確な情報の掲載に努めておりますが、その内容の正確性・完全性・最新性を保証するものではありません。
記事の内容をご利用の際は、ご自身の責任において判断し、必要に応じて専門家にご相談ください。
当サイトの情報の利用により生じたいかなる損害についても、一切の責任を負いかねますのでご了承ください。
※ 本ページでは、著作権法に基づき、適正な引用の範囲内でコンテンツを紹介しています。
オリジナルの情報は発信元をご確認ください。
もし問題がありましたら、こちら からお問い合わせください。