比如style.css?v=1.0,客户端打开后会缓存1.0版本的css文件,而你在下次升级css文件后,文件名不改,那么没有清理过缓存的浏览器就会出现样式错误或者是旧样式。如果你改成style.css?v=2.0 ,就不会出现这样的问题,浏览器就会识别为新的css文件来重新加载。
1、将css写成jsp的格式,动态生成css<%@ page contentType="text/csscharset=utf-8" pageEncoding="utf-8" %>
<% // 从数据库或配置文件读取系统管理员设置的系统参数 %>
body { background: <%= bodyBackground %>} /* 应用参数 */
...
2、如要换肤之类,样式修改比较多,应用较多页面的情况,建议将不同样式写入不同的CSS文件,通过jsp/servlet将css的选择参数写入session或application,然后在jsp中判断进行选择
<c:if test='${not empty param.theme}'><c:set var='css' scope='session'>${param.theme}</c:set></c:if>
<link rel="stylesheet" type="text/css" href="<c:url value='/css/${session.css}.css'/>"></link>
经常看到不少导航网站测样式或js文件后面加了一些参数,主要是一你为一些并不经常更新的页面重新加载新修改的文件。经常遇到页面里加载的js与css文件带有参数,比如:
<script type="text/javascript" src="jb51.js?version=1.2.6"></script><link rel='stylesheet' href='base.css?version=2.3.3' type='text/css' />
使用参数有两种可能,
脚本并不存在,而是服务端动态生成的,因此带了个版本号,以示区别。
客户端会缓存这些css或js文件,因此每次升级了js或css文件后,改变版本号,客户端浏览器就会重新下载新的js或css文件
第二种情况最多,也可能两种同时存在。
版本号,可以是一个随机数,也可以是一个递增的值,大版本小版本的方式,或者根据脚本的生成时间书写,比如 20170104205959 就是精确到了生成脚本的秒,而 2.3.3 就是大版本小版本的方式。