关于缓存问题

现在公司有多个项目,A项目是Hybrid开发,B项目是微信公众号。
现在A和B项目都遇到缓存问题,尤其是微信端,尽管网上查了很多,但都没有完美的解决方案。
A项目的问题主要存在于不同机型和系统版本,比如OPPO R9,尽管head加了

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

还是没用。webpack打包的时候都加了hash值,然并卵。

想知道有没比较全面有效的解决方案?


补充:

new ExtractTextPlugin('index-[contenthash].css'),
output: {
    path: path.join(process.cwd(), conf.paths.dist),
    filename: '[name]-[chunkhash].js'
  }

hash就是这么加的,可能像@whale说的那样,入口index.html被缓存了

阅读 2.5k
3 个回答
  • 我猜测题主的入口html(index.html)被缓存了
  • 被缓存的html还是引用的原始的js文件(上一次添加了hash的js文件)
  • 因此浏览器根本就没有向服务器请求任何静态资源,包括index.html
  • 如果仅从前端的角度解决index.html被缓存的问题,可以将入口html设置为jump.html,jump.html内容如下:
<!DOCTYPE html>
<html lang="zh-CN">
  <head>
  </head>
  <body>
    <script>
      location.href = 'url/index.html?' + '随机字符串';
    </script>
  </body>
</html>

你的哈希是如何添加的?2种方式

  1. hash加文件名上
abc.hashxxx.js
  1. hash加载参数上
abc.js?hashxxxx

理论上这两种方式都可以避免缓存,因为url不一样了,浏览器绝对不会缓存代码。
但是第二种有一个风险静态服务器可以设置忽略参数部分,如果设置了参数无效则可能造成缓存。

可以把页面发出来看看

打包的设置,给打包的css文件和js文件加问号和hash值 并不是从html入手

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题