DjangoでCache Bustingの設定する

DjangoでCache Bustingの設定する

静的なファイル群(画像、CSS、JSなど)は、キャッシュ対策(Cache Busting)を行わないとブラウザ側でキャッシュされたファイルが上手く更新されず不具合のもととなってしまいます。

なので、今回は、Djangoで行うことができる二通りのキャッシュ対策を紹介致します。

方法1. ファイル名にハッシュを付加する

Djangoには、デフォルトでbase.e352ca3230fc.cssのようにファイル名にハッシュを付加する機能が備わっており、それを使うことでキャッシュ対策をすることができます。

設定方法

# settings.py
DEBUG = False
...
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'
<!-- base.html -->
{% load static %}
...
<link href="{% static 'css/style.css' %}" rel="stylesheet" type="text/css">

出力結果

<link href="/static/css/base.e352ca3230fc.css" rel="stylesheet" type="text/css">

方法2. クエリーにバージョンを付与する

django-static-md5urlを利用すれば、base.css?v=e352ca3230fcのようにバージョンを付与することで、キャッシュ対策を行うことができます。

こちらは、ファイルの保存先自体が変わらないので、リンク切れが起きにくいです。

設定方法

$ pip install django-static-md5url
# setting.py
INSTALLED_APPS = [
...
    'django_static_md5url',
]
<!-- base.html -->
{% load md5url %}
...
<link href="{% md5url 'css/style.css' %}" rel="stylesheet" type="text/css">

出力結果

<link href="/static/css/base.css?v=e352ca3230fc" rel="stylesheet" type="text/css">