在处理静态文件中文件更新和缓存处理,一般都根据文件内容的HASH,在文件的路径中加入HASH值,如果文件有差异这个HASH值也不同,浏览器缓存更新问题就解决了。
针对Django提供了好多种方案,如:django-pipeline, Django Compressor, django-webpack-loader, python-webpack-manifest,其实Django官方已经有内置支持。
只需要在settings.py
中设置好这几个简单步骤就行:
1) 生成静态文件
STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, "static") STATICFILES_DIRS = [] STATICFILES_STORAGE = "django.contrib.staticfiles.storage.ManifestStaticFilesStorage"
完成设置后执行collectstatic
命令就会在static
目录中生产对于的带HASH路径的文件,并且在static
目录中会有一个文件staticfiles.json
,这里面存放了文件的对应关系,运行时界面输出中靠这个文件获取hash路径。
python manage.py collectstatic --noinput
2) 使界面引用中产生hash路径,这个还是修改settings.py
,如果为True,则不会在界面中使用hash路径。
DEBUG = False
注意:调试时就不要设置为False了,设置为False时/static/
路径的服务将会停止,对应的文件就取不到了。