在处理静态文件中文件更新和缓存处理,一般都根据文件内容的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/路径的服务将会停止,对应的文件就取不到了。

[ 编辑 | 历史 ]
最近由“jilili”在“2019-12-15 14:40:38”修改