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

遇到一个问题,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失效,感觉动不动就失效,弄的我也不太敢用

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