通过meta标签设置
设置缓存有2种方法:
<!-- 设置缓存2小时,max-age指最大缓存的秒数 -->
<meta http-equiv="Cache-Control" content="max-age=7200" />
<!-- 或者这样设置永远不缓存 -->
<meta http-equiv="Cache-Control" content="no-cache" />
还可以通过Expires来设置:
<!-- 表示过期时间,必须是GMT格式 -->
<meta http-equiv="Expires" content="Tue, 31 May 2016 11:09:29 GMT" />
这2种方法效果是一样的,推荐使用前者,因为后者还要计算时间,麻烦!
附上Java计算GMT格式时间的方法:
// 获取当前时间+2小时之后的GMT标准时间,如:Tue, 31 May 2016 11:09:29 GMT
Calendar gmtCalendar = Calendar.getInstance();
gmtCalendar.add(Calendar.HOUR, 2);
DateFormat gmtFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US);
gmtFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
String gmtTime = gmtFormat.format(gmtCalendar.getTime());
System.out.println("2小时候的gmtTime:"+gmtTime);
需要特别说明的是,这些只是控制HTML本身的缓存,网页使用到的css、js等不在这个控制范围内。
万能的清除缓存方法
“给资源地址增加无用的参数”这是唯一百分百能保证客户端一定会重新从服务器加载资源的方法(而且没有任何兼容性问题),其原理就是因为参数属于地址的一部分,你更改了资源地址的参数,浏览器认为你指向的是另外一个新地址,此时无论如何它都不会缓存,一般的做法就是给资源链接添加时间戳或者随机字符串,比如这样:
<script type="text/javascript" src="js/common.js?t=1470900999327"></script>
如果采用的是jsp等服务端语言那很好办,如果采用的是纯html,一般需要找个工具或者自己写个工具来批量更新资源链接的时间戳。