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

一.常见的解决方案

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

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

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

2.对js,css加时间戳

此种方法存在的问题是当js或css,更改后又被还原,但是时间戳已经更改,而导致浏览器需要重新下载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.执行结果

时间: 2024-10-12 15:43:52

基于md5的解决js,css缓存问题for django的相关文章

JS/CSS缓存杀手——VS插件

背景 前些天去考科目二,感觉经历了一场不是高考却胜似高考的考试(10年前的5分之差, 还是难以释怀)!    一行八人,就我学的时间最少(4天,8人一辆车),教练都觉得我肯定还得再来一次! 靠着运气和信念,惊险的通过了侧方停车和倒车入库,终于还是抚慰了一下10年前那颗年轻的心!  ----------感慨完毕,回归主题---------- 终于修改完了客户提交的bugs,发布.更新.测试.邮件通知,悠哉悠哉的浏览博客园...然后客户来了... 客户:我提的需求怎么都没修改,这个按钮颜色也没变,点

JavaEE Web应用的js css images html等如何模块化

一个公司通常有一套通用的开发框,包括后台的java代码和前端的js/css/image/等等,java代码是很好办的,用maven管理,划分出相应的模块,比如 core.jar, common.jar等等,上传到公司的maven库,然后其它项目去依赖就好了. 但是对于webapp下面的东西怎么办呢,比如我们有通用的js/css,还有一些通用的功能,那么就还有jsp,这些如果分发给各个项目组呢? 在网上了解了下,发现有几种现成工具: 1. twitter推出的bower,是一款前端包管理工具,依赖

ssm 整合中js,css 文件无法引入

问题:ssm 整合中第三方 js,css 文件无法引入 检查:ssm 整合配置完好 无拦截器拦截 spring mvc  静态资源已配置 编译时可以直接跳转到js  css 问题发现 js  css 文件放在WEB-INF 下,导致无法引入 解决 js  css 文件放在webapp 下,可以引入 原文地址:https://www.cnblogs.com/jsbk/p/9461374.html

【php】基于Redis的js、css缓存类

<?php /* *基于Redis的js.css缓存类(有效解决tp等框架访问public出现的各种问题) *Written by Radish 2015.8.16 */ define('REDIS_HOST', '127.0.0.1'); define('REDIS_PORT', 6379); // class im { function __construct() { $this->redis = new Redis(); $this->redis->connect(REDIS

js/css文件修改后浏览器本地缓存解决

本文实例讲述了让html页面随js的修改来更新缓存的实现方法.分享给大家供大家参考.具体实现方法如下: 很多朋友都会碰到这样的情况:如果我们页面加载了js的话下次打开时也会是调用这个js缓存文件,但对于我们修改后调试和发布是非常的不方便了,本文就来谈论如何解决这一问题,下面一起来看看. 一.后台编写一个 UrlCommon的js/css url的连接操作类 1 using System; 2 using System.Collections.Generic; 3 using System.Lin

让浏览器重新下载css文件,解决不刷新缓存的问题

网站页面源代码中的css文件和js文件后面带一个问号,后面跟着一连串数字或字符,问号起不到实际作用,仅能当作后缀,如果用问号加参数的方法,可以添加版本号等信息 它的作用有:1.作为版本号,让自己方便记忆.查找:2.作为修改标签,让浏览器重新下载新文件. 新浪.facebook上用到的: http://xxx.xxx.cn/css/common/index.css?version=20121226142105 http://tjs.sjs.xxx.cn//static/js/top.js?vers

分享一个控制JS 浏览器缓存的解决办法。

 JS 缓存的问题一直都是我们又爱又恨的东西.也是我们比较头痛的问题, 一方面为了提高网站响应速度,减少服务器的负担,和节省带宽,将需要将静态资源缓存在客户端, 但是另一方面,当js 文件有改动的时候,如何快速的将客户端缓存的js文件都失效,这是非常头痛的问题. 以至于每次客户反馈问题的时候,我们第一个解决办法都是清理浏览器缓存. 那么如何解决呢. 1. 直接禁止全部的静态文件缓存 在html 头部加上如下代码: <META HTTP-EQUIV="pragma" CONTENT

web项目中关于引入JS/css文件, 浏览器console出现 net::ERR_ABORTED错误的解决方法

如图错误: 引入js/css后,控制台出现的错误! 我的错误则是因为在静态文件夹下的原因. 解决:如果要放在webRoot下的静态(static)文件夹下,需要在springMvc的配置文件中添加上注解(<mvc:default-servlet-handler/>)和(<context:annotation-config></context:annotation-config>),如果有(<context:component-scan />),则不需要第二条

Web性能优化之动态合并JS/CSS文件并缓存客户端

在Web开发过程中,会产生很多的js/css文件,传统的引用外部文件的方式会产生多次的http请求,从而加重服务器负担且网页加载缓慢,如何在一次请求中将多个文件一次加载出来?接下来给大家介绍在ASP.NET中动态合并加载多个js或css文件.原理:减少请求服务器的次数达到优化效果先给大家看一下传统引用方式和优化后的比较:1.传统引用方式(下图): 这样的引用方式将会请求5个js文件也就是5次http请求(下图): 2.我们来看看优化后(下图): 大家可以看到修改后只有一次请求,花费的时间节省了很