微信内置的浏览器缓存了入口文件( SPA),导致总能访问到上个版本网站,怎么办?

2017-10-19 22:01:47 +08:00
 Mark24
虽然老生常谈了,看了好久,也没看到一个靠谱的方法。
可是,难道不上线,不更新了么?显然不能。这么多网站都能正常访问,所以还是想再问一遍。

我们的具体情况是,Vue 做了一个 SPA 的触屏页面系统,接入微信公众号,给业务员使用。
第一个版本很好,没有问题。然后改进了很多,的第二版在测试服务器上没有问题。(测试服务和线上服务一样的配置,一台机器 Nginx 一样的配置,分仅仅是不同文件夹分开储存)

上传到线上,我们还在公众号的按钮链接给首页加了 ?v=xxx 版本控制。初次能够正常的跳转,载入,但是把页面叉掉,重新进入,页面就是老的状态。由于线上代码已经被干掉,所以访问不正常。

网上的策略,比如添加不缓存的 meta 头,js,css 已经用 webpack 使用 hash 命名方式,Nginx 配置 不采用缓存,公众号链接使用域名+版本号,更改服务器上 index.html 入口文件的名字,让 Nginx 重新指定。好了,能做的,我们都做了。

现在依然有部分机器,还会在以往的上版本页面出现加载问题。

我现在觉得只能是用户手机微信的本地缓存,但是无论是刷新,还是清缓存,取消关注公众账号再重新关注,还是退出登录微信再重新登陆,都是部分有效,貌似没有看到一个 100% 的方法。

现在有两个想法:
1.有没有一种方式,能够主动清理掉缓存。

2.突然想到的,是不是内部所有的 url 都要加上 ?v=xxx 版本,那 SPA 的路由跳转。。。。
突然想到内部授权的是 vue-router 的跳转。但是这样的话,其不是很烦么?

----

感觉很烦躁,时间不是花在解决有价值的问题上。。。而是在这儿死磕微信。。
我真心的觉得,每个 App 内置一个 Chrome 就好了,别搞这些没用的。业界毒瘤啊。
微信的文档,客服,均没有找到有价值的信息。
6849 次点击
所在节点    问与答
8 条回复
isbase
2017-10-20 01:14:07 +08:00
可以在 Nginx 里对 html 启用 etag 和发送 cache-control no-store
phy25
2017-10-20 01:57:37 +08:00
debugx5.qq.com 可清缓存。
Mark24
2017-10-20 08:28:16 +08:00
@phy25 这个安卓和苹果并不能同时打开。而且也不指望用户能用这个。体验太差了。
ctx331
2017-10-20 09:11:52 +08:00
我也遇到这个问题 改了 webpack 配置 ,js 的 chunkhash 不加在文件名后,而是加在 search 后了。至少先保证页面能正常访问,不会因为 js 文件名改变导致找不到 js 文件而出错。

其实用户点右上角三个点,再点刷新,多刷几次也就好了,可惜不是根本的解决办法。

最后这个问题似乎只出现在部分微信版本中,,只有个别用户遇到。
node
2017-10-20 09:18:04 +08:00
你在公众号的按钮里给链接加上?v=xxx,这个 xxx 是固定的吗?我是做成一个 302 跳转链接,每次跳转到一个随机数的 xxx,用到现在貌似没有再被缓存过,这个动态跳转可以用 js 实现,也可以直接在 nginx 或者 openresty 里用 lua 写一下
Mark24
2017-12-15 16:59:50 +08:00
也不需要去除服务器缓存之类的。
归根结底是微信缓存了页面。
-----
每个页面,跳转的时候,加上 ?v=xx 的时间戳有效
但是微信也对,诸如 v,t 常用名字,做了一些缓存策略,要起个特别的名字 比如 ?vt=<timestamp>

如果是单页面,很方便,只要入口跳转的时候,加

如果是多页面,麻烦点,进入每个页面都要加

总之,让你下次的页面,看起来和上次的 url 不一样就对了
亲测,有效。已经上线。

时间太久,都忘了终结这个帖子。
Mark24
2017-12-15 17:00:13 +08:00
@node #5 感谢,感谢币已发
luojiyin87
2018-04-04 18:18:09 +08:00
如果是用 Nginx 控制缓存 可以加上
expires -1;

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/399066

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX