基于md5的解决js,css缓存问题for django

一.常见的解决方案

js,css更新的时候,由于浏览器的缓存机制,可能导致引用老的js,css而引起错误。以往常见的解决方法有两种:

1.对js,css加版本控制,例如:jquery.min.js?v=xx.xxx.xx

此种方法存在的问题是需要对版本控制进行维护,比较麻烦

2.对js,css加时间戳

此种方法存在的问题是当jscss,更改后又被还原,但是时间戳已经更改,而导致浏览器需要重新下载js,css

 

二.md5解决js,css缓存问题的原理

根据js,css的内容生成一个字符串,当js,css发生改变的时候字符串也会随之更改。

 

三.md5的解决js,css缓存问题for django

使用CachedStaticFilesStorage中的配置方法来实现:https://docs.djangoproject.com/en/1.6/ref/contrib/staticfiles/#django.contrib.staticfiles.storage.CachedStaticFilesStorage

1.在setting中设置

1).设置STATICFILES_STORAGE 

STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.CachedStaticFilesStorage'

2).设置cache,memcache or ridis(至少指定一个):

CACHES = {
    "default": {
        "BACKEND": "redis_cache.cache.RedisCache",
        "LOCATION": "127.0.0.1:6379:1",
        "OPTIONS": {
            "CLIENT_CLASS": "redis_cache.client.DefaultClient",
        }
    }
}

3).设置debug=False

4).设置static_root

STATIC_ROOT = os.path.join(BASE_DIR, "static")

2.在前端页面中加入staticfiles标签

 {% load static  %}
 <link href="{% static  'css/bootstrap.min.css' %}" rel="stylesheet">

3.执行python manage.py syncdb,在static中生成MD5文件:

4.执行结果

 

posted @ 2014-11-13 14:13  豆子在coding  阅读(1927)  评论(1编辑  收藏  举报