xi_lin

求教下 bfcache 失效的问题

  •  
  •   xi_lin · May 24, 2018 · 3658 views
    This topic created in 2945 days ago, the information mentioned may be changed or developed.

    目前我们的网站在微信里 bfcache 处于失效的状态,每次返回都变成完全刷新,用户体验比较差。

    查过不少资料,比较全的一个列表是这里

    另外,有issue说 vue 2.5 以后也会有影响。

    尝试过屏蔽 MessageChannel,仍旧无效。不知道是不是什么时候引入的第三方库导致的 bug。

    有没有大佬指导一下这种东西怎么调试比较好?

    我目前想到最笨的方法是从头开始建项目,一点点加东西来测试

    Supplement 1  ·  May 24, 2018
    Supplement 2  ·  May 24, 2018

    safari有个隐藏开头

    defaults write com.apple.Safari IncludeInternalDebugMenu 1
    

    开启后可以看到一个Show Back/Foward Cache Window,但是我开启后这个窗口中数据始终为空

    Supplement 3  ·  May 24, 2018
    https://github.com/WebKit/webkit/blob/master/Source/WebCore/history/PageCache.cpp

    过一了遍 canCache 的条件,感觉我只剩 build 一个 debug 版本来看这条路了
    Supplement 4  ·  May 25, 2018
    通过 WebKit 调试确定了:就是使用 MessageChannel 导致 bfcache 失效,会让页面中存在无法休眠的 activeDOMObject

    除了 vue 会使用以外,core-js 里的_task 也可能使用

    目前我们的解决方法是`window.MessageChannel = null`
    4 replies    2019-04-12 12:33:10 +08:00
    hkongm
        1
    hkongm  
       Apr 10, 2019
    同样问题,试试这个暴力方法咋样。。。
    xi_lin
        2
    xi_lin  
    OP
       Apr 10, 2019
    @hkongm 还有问题的话你就得重复我的步骤源码编译一下调试了。
    最近发现一个新的坑,chrome 默认是不支持 bfcache 的,miui 的自带浏览器为了实行返回不刷新,似乎每一个跳转都是用新页打开的,只是旧页面用户不可见
    hkongm
        3
    hkongm  
       Apr 11, 2019
    今天的进度 vue-loader / vue-cli 的坑,团队小伙伴发现的
    页面干净的引用 vue.min.js 就没问题,cli build 后就完蛋
    xi_lin
        4
    xi_lin  
    OP
       Apr 12, 2019
    @hkongm 看我 append 的信息,不一定是 vue 用的,vue 会优先用 setImmediate,而 babel 的 polyfill 里 core-js 会给它补上。有可能是别的库用到
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5762 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 02:35 · PVG 10:35 · LAX 19:35 · JFK 22:35
    ♥ Do have faith in what you're doing.