可能这个问题大家也会遇到,在微信浏览器内执行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()。
切记,一定要加随机数,否则一样不会起作用。