微信内置浏览器清理缓存方法

目前感觉大部分所接触过的项目,目标用户几乎都是使用微信浏览器打开的,在一定程度来说,发布测试版还有本地测试的过程中,微信这种怎么也清不掉的缓存真的很烦人.

下面直入正题, 给出清除微信浏览器缓存的终极方法: 登出微信,再重新登录微信.  ☆☆☆

 

如果嫌麻烦的话, 可以试一下不一定成功的清除缓存方法:

1. 重新刷新几次,直到缓存被刷掉   ☆

2. 在改变的资源后面加上版本号,也就是例如index.html?v=1234654   ☆☆

<script>
    if (!window.name) {
        var str = Math.random().toString(36).substr(2); //随机字符串 
        window.location.href += '?S=' + str; //兼容微信浏览器刷新
        window.name = 'isreload'; //name 属性可设置或返回存放窗口的名称的一个字符串。
    }
</script>

 

3. 安卓的可以打开这个网址进行缓存清理: http://debugx5.qq.com/   ☆☆

4. 使用meta来禁用缓存 ☆

<!-- // 配合 mate禁用 缓存标签,实现禁用浏览器缓存(实现原理,自动刷新) -->
<meta HTTP-EQUIV="pragma" CONTENT="no-cache">
<meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate">
<meta HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
<meta HTTP-EQUIV="expires" CONTENT="0">

 

PS:微信浏览器缓存不是一般的顽固,当然上面的方法真的只是针对测试的时候的一种方法而已,如果真的是已经上线了的项目,那就很难讲了,不可能叫每个用户都去进行清理缓存的操作,而且还会涉及到服务器那边的缓存问题。

 

// 2022/10/13 更新

突然想起这个文章,才想起去年了解了HTTP缓存的知识.知道了缓存主要有两种.

- 强缓存: 返回的时候带有 `Cache-Control` 响应头,而且请求方式是get,两次请求的url完全相同的时候就会使用强缓存,也就是在控制台网络会发现 Size 会显示 memory cacha(内存缓存),Time 0ms(就相当于不用时间请求).

- 协商缓存: 后端设置的,主要是判断文件的最后修改时间来判断是否使用缓存,也就是请求返回状态码是304的缓存,如果是使用缓存的话,只会返回响应头,而不会返回新的响应内容.

结论就是:

两种缓存都可以由客户强制刷新来不使用缓存重新加载.

如果开发者要解决这些缓存的话,改变文件名和在url加参数之类的操作只能清除强缓存.

如果服务器判断失误而产生的协商缓存,则需要服务器去清理HTTP缓存,这才是最根本最合适最有效的解决方法.

posted @ 2018-07-06 18:44  梦里起风了  阅读(18927)  评论(2编辑  收藏  举报