zoukankan      html  css  js  c++  java
  • 被微信浏览器的缓存给忽悠啦!

    最近为一个老项目做微信接入相关的工作,遇到一个特别奇葩的事情,客户端明明用js window.location = 'xxx.html' 访问了一个页面,那个页面会自动去访问后台的接口,后台接口去调用微信的接口,但是测试的时候,发现有的时候可以成功访问到 xxx.html,有的时候不能成功访问到xxx.html,后台调试输出的结果是,不管你是否成功的访问到了 xxx.html 页面,都会进行正常的 xxx.html 页面之后的操作,也就是访问后台的接口,但是如果没有成功访问到 xxx.html,所以它后面的操作就会失败,如果成功访问到了xxx.html,那么后面的操作就能正常进行。调试了两个多小时,一直搞不明白,前端明明  window.location = 'xxx.html',为什么就没有访问到 xxx.html 页面呢?太奇怪了。后来用手机重复测试的,观察反应的时候,发现 在访问 xxx.html页面时, 微信浏览器 的标题 会显示 xxx.html 页面的<title> 的标题,但是不到1秒,之后,有跳回到了之前的页面,玛德,到这里,才想到是 微信浏览器的缓存在作怪!!!以前也遇到过PC浏览器的换成问题,ctrl+f5 或者安装个插件设置一下就永远搞定了,但是第一次遇到微信浏览器的缓存,还是被忽悠了。

    找到了原因,解决办法就简单了。window.location='xxx.html' 时,在后面加个随机参数:window.location='xxx.html?_r='+Math.random();

    这样每次访问的都是不同的连接,所以避免了微信浏览器使用缓存的 xxx.html 页面。

    其它的解决办法:

    <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" />

    感觉不一定靠谱。

    微信开发一定要注意他的缓存问题。

  • 相关阅读:
    进程&线程
    PLAN
    Note-Virus
    编译器 CL.EXE / RC.EXE
    windows API
    centos6.5系统中yum命令出错
    VMware Workstation10 下安装 CentOS6.5( 安装图文教程 )
    Linux下网络能ping通地址 但是ping不通域名
    MySQL数据库优化的八种方式(经典必看)
    Java中常见的对象类型简述(DO、BO、DTO、VO、AO、PO)
  • 原文地址:https://www.cnblogs.com/digdeep/p/4837836.html
Copyright © 2011-2022 走看看