解决微信浏览器刷新页面缓存的几种方式

可能这个问题大家也会遇到,在微信浏览器内执行window.location.reload(),正常情况reload()后页面依然会向后台发出请求,但在微信浏览器中reoad后请求的一直是第一次打开页面时请求的数据。可以理解为请求被缓存了,经过测试有俩种方式来解决:

1:设置<meta>头信息

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> 
<meta http-equiv="Pragma" content="no-cache" /> 
<meta http-equiv="Expires" content="0" />

详解:

1.1:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />

no-cache:指示请求或响应消息不能缓存
no-store:用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。缓存将不存储response,包括header和body
must-revalidate:作用与no-cache相同,但更严格,强制意味更明显。但这只是理论上的描述,根据我在ff6上的测试,它几乎不起作用:只要请求的频率加快到一定程度,服务器就接收不到请求。

1.2:

<meta http-equiv="Expires" content="0" />

指定Expires值为一个早已过去的时间,那么访问此网时若重复在地址栏按回车,那么每次都会重复访问,设置为0,表示立即过期。

1.3:

<meta http-equiv="Pragma" content="no-cache" />

禁止浏览器从本地计算机的缓存中访问页面内容。注意:这样设定,访问者将无法脱机浏览。

2:通过添加随机数:

使用window.location.href=”window.location.href+随机数” 代替 window.location.reload()。

切记,一定要加随机数,否则一样不会起作用。