HTML缓存设置
本文由 小茗同学 发表于 2016-08-11 浏览(9575)
最后修改 2016-08-11 标签:html 缓存 控制 cache control 清除

通过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,一般需要找个工具或者自己写个工具来批量更新资源链接的时间戳。