有没有熟悉bfcache和微信网页开发的有个问题想请教下

发布于 2022-09-05 09:20:39 字数 973 浏览 8 评论 0

遇到一个问题,bfcache在微信客户端进行分享操作导致bf失效。
测试了两种情况,
第一种情况:
打开一个页面,点击链接,进入另外一个页面,再点返回,返回之前的页面,这种情况bfcache可以正常运行,页面的所有状态都被保留下了。
第二种情况:
同一个页面,点击同样的链接,进入相同的页面,点击左上角的"···"进行分享,分享完成后,点击返回,返回之前的页面,这种情况下bfcache不起作用了,也没重新加载。
我上网查了一下,有这么几种情况导致bfcache失效

  • 页面监听了 unload 或者 beforeunload 事件;
  • 页面设置了 “cache-control: no-store”.
  • 网站使用 HTTPS 同时页面至少满足以下一个条件:
    “Cache-Control: no-cache”

“Pragma:no-cache”

  • 设置请求头 “Expires: 0” 或者 “Expires” 的值为 “Date” 之前的值 (除非 “Cache-Control:
    max-age=” 也被设置了);
  • 页面在用户前进后退的时候还没有完全加载完或者它有正在进行的网络请求,比如 XMLHttpRequest;
  • 页面正在进行IndexedDB操作;
  • 顶层的页面包含有frame,并且这些frame由于这里列的任何一条原因而不能被缓存;
  • 页面在一个frame内,并且用户在这个frame内跳转到了一个新的网页,这里将被缓存的是新载入的网页

上述的测试,我基本可以确定是微信分享的操作导致bfcache失效。不知道微信会不会对此调整,我想请教下,利用bfcache来返回到上一个页面原来的位置是否靠谱,之前是系统是用swiper做在了同一个页面来回滑,但是系统越复杂,集成在同一个页面的复杂度就越大,代码就越难读,分开每一个页面返回的时候经常会重新加载页面,我之前还发现使用高德地图的链接会导致页面bfcache失效,感觉动不动就失效,弄的我也不太敢用

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文