6
10

More than 5 years have passed since last update.

DjangoでCSS等の更新がなされない場合にすべきこと

Last updated at Posted at 2019-06-13

ブラウザにキャッシュが残るのでCSSを変更・更新しても変更がブラウザに反映されない。
以下に対処法をあげる。

1.スーパーリロードする

OSやブラウザによって操作は異なるようだが、スーパーリロードでググればでてくるので詳細は省略。
スーパーリロードすることによって強制的に更新する。
ただし、自分でやる分にはいいが顧客にやってもらうのは面倒である。
https://qiita.com/shati-taro/items/3946d3962071a26ebcb6

2.キャッシュバスティング

DjangoでCache Bustingの設定する
https://webty.jp/staffblog/production/post-1181/

2-1.クエリをつかう

手動でクエリを変更することもできるが面倒。django-static-md5urlを使う。
https://pypi.org/project/django-static-md5url/

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

クエリが付与された状態で出力される。

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

2-2.名前を変更する

setting.py
DEBUG = False
...
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'
app/templates/base.html
<!-- base.html -->
{% load static %}
...
<link href="{% static 'css/style.css' %}" rel="stylesheet" type="text/css">
$ python manage.py collectstatic

ファイル名にハッシュが付与された状態で出力される。

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

ただしハッシュごとにファイルが別れることになるので管理が面倒。

6
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
10