css 后面带参数是什么意思

html-css015

css 后面带参数是什么意思,第1张

css后面加参数主要是起到一个缓存更新的作用。

比如style.css?v=1.0,客户端打开后会缓存1.0版本的css文件,而你在下次升级css文件后,文件名不改,那么没有清理过缓存的浏览器就会出现样式错误或者是旧样式。如果你改成style.css?v=2.0 ,就不会出现这样的问题,浏览器就会识别为新的css文件来重新加载。

经常看到不少导航网站测样式或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 就是大版本小版本的方式。

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>