如何让 Chrome 浏览器标签「真正」休眠? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
Mindjet
V2EX    奇思妙想

如何让 Chrome 浏览器标签「真正」休眠?

  •  
  •   Mindjet 2020-08-19 14:47:27 +08:00 7244 次点击
    这是一个创建于 1886 天前的主题,其中的信息可能已经有所发展或是发生改变。

    懒加载网页,比如百度文档翻译,如果关闭网页,再次打开就要从头开始。

    是否有办法将标签页休眠?

    就好像 PC 休眠,唤醒并不需要从头开始,而是和离开时完全相同。

    去谷歌找到了冻结标签页的扩展,但都是重新加载,比如 Tab Suspender 和 The Great Suspender 。

    有人见过类似的扩展或者浏览器吗?

    如果要实现这个功能,开发 Chrome 扩展能实现吗?

    PS:

    1. 百度文档翻译是不能够完整导出的
    2. 也许还能更快启动大型 WebApp
    32 条回复    2020-09-22 21:09:02 +08:00
    codehz
        1
    codehz  
       2020-08-19 16:24:55 +08:00 via Android
    扩展不可能有这个权限做
    RiESA
        2
    RiESA  
       2020-08-19 16:28:20 +08:00   1
    变通法子,在虚拟机里面装一个浏览器然后打开标签不要关,然后直接挂起虚拟机
    Mindjet
        3
    Mindjet  
    OP
       2020-08-19 16:52:10 +08:00
    @RiESA #2
    能用但有点臃肿的主意!
    能解决很多问题,Thanks(ω)
    Mindjet
        4
    Mindjet  
    OP
       2020-08-19 16:53:58 +08:00
    @RiESA #2
    选刚好能用 Chrome 的轻量系统会很不错,ChromeOS 也许是不错的选择。
    soji18
        5
    soji18  
       2020-08-19 17:24:39 +08:00 via Android
    RiESA
        6
    RiESA  
       2020-08-19 17:33:41 +08:00
    @soji18
    "标签冻结将卸下所有不活跃时间超过 5 分钟的标签,释放 CPU 和内容资源给其它标签使用;"
    这个怕是和楼主的需求背道而驰(狗头)
    Mindjet
        7
    Mindjet  
    OP
       2020-08-19 17:49:28 +08:00
    @RiESA #6
    已经习惯了不看帖子就回复的,之前我还认为可能是帖子太长,写的太无聊,这次这么短还是这样。
    这些人很热心,但没有什么耐心。
    Mindjet
        8
    Mindjet  
    OP
       2020-08-19 17:53:20 +08:00
    @RiESA #6
    这个也不能算是背道而驰了,只是和需求完全不一样,因为这个功能 Chrome 早就内置了。
    场景就是,很容易不小心关闭重要的 Chrome 窗口和标签,如果要用这个功能,那就得保持那个窗口存在,这谁也会啊。
    Mindjet
        9
    Mindjet  
    OP
       2020-08-19 17:55:00 +08:00
    @RiESA #6 当然我刚才说的话有点着急了,我也不能完全确定,把这个功能打开试试看吧,看看是个什么效果,也许已经是 Enable 是默认值了吧。
    lxilu
        10
    lxilu  
       2020-08-19 18:45:18 +08:00
    暂停 /挂起 标签页进程
    Mindjet
        11
    Mindjet  
    OP
       2020-08-19 18:51:16 +08:00
    @lxilu #10
    挂起之后,如果重启系统,还能恢复进程吗?
    dobelee
        12
    dobelee  
       2020-08-19 19:20:11 +08:00 via iPhone
    扩展级不可能实现吧。跑个题,为什么不加大内存?不关网页。
    Mindjet
        13
    Mindjet  
    OP
       2020-08-19 19:35:03 +08:00
    @dobelee #12
    总有意外。机子内存够,先锁住标签页,保证误操作不关闭标签,是能够保持一段时间,但总是有各种意外情况会被关掉。
    Mindjet
        14
    Mindjet  
    OP
       2020-08-19 19:35:42 +08:00
    @dobelee #12
    现在看来最好的方案就是那位说的虚拟机,我觉得很靠谱,下一次会实践。
    shenzye
        15
    shenzye  
       2020-08-19 19:47:49 +08:00 via Android
    写个插件,用 js 把页面缓存下来,打开的时候直接加载缓存
    Mindjet
        16
    Mindjet  
    OP
       2020-08-19 19:53:09 +08:00
    @shenzye #15 谷歌浏览器自带的保存不行,用过几个 JS 实现的也不行
    wellsc
        17
    wellsc  
       2020-08-19 19:54:51 +08:00
    command + p
    gcyrn
        18
    gcyrn  
       2020-08-19 19:55:15 +08:00 via Android
    在用 The Great Suspender,但感觉内存占用依然不减
    Mindjet
        19
    Mindjet  
    OP
       2020-08-19 19:59:33 +08:00
    @gcyrn #18
    你的意思是这个扩展完全没用吗?
    感觉不太可能,因为这个项目评分还是挺高的,如果不管用的话,应该不会这样.
    Mindjet
        20
    Mindjet  
    OP
       2020-08-19 20:00:34 +08:00
    @wellsc #17 打印之后如何继续交互?
    zzy2357
        21
    zzy2357  
       2020-08-20 00:30:24 +08:00
    js 的 alert 是否可以达到冻结网页的需求?
    jarnanchen
        22
    jarnanchen  
       2020-08-20 02:54:05 +08:00
    同意楼上, alert 应该能起到部分效果
    Mindjet
        23
    Mindjet  
    OP
       2020-08-20 08:46:00 +08:00
    @zzy2357
    @jarnanchen
    可能我描述的不太清楚,模态对话框这种手段显然是没用的。
    Ctrl+W 轻松关闭,而且进程关闭当然无法阻止。
    需要是内存级别的保存和恢复,类似 PC 休眠,断电后也能恢复。
    Mindjet
        24
    Mindjet  
    OP
       2020-08-20 08:46:40 +08:00
    @jarnanchen
    @zzy2357
    难道「类似 PC 的休眠」这么难理解吗?
    怎么表述才能够让大家理解呢?
    SimonOne
        25
    SimonOne  
       2020-08-20 09:55:37 +08:00
    谷歌浏览器 PC 版的稍后阅读
    https://www.landiannews.com/archives/78519.html
    no1xsyzy
        26
    no1xsyzy  
       2020-08-20 10:12:07 +08:00
    扩展还是得跑在 V8 里面,但你这个问题需要从底层往上的全面修改,而且浏览器的全部状态并不如操作系统那样放在一块,而是分散在各处,这要进行全局快照是个很诡异复杂的事。

    另一方面,这一功能有很多待处理的问题:
    setInterval(func, 1000) 之后冻结了一个小事怎么处理?你是瞬间把这个函数重复 3600 次?那不得瞬间卡死?还是说装作没有中间的时间?那某些依赖于模糊的时间的行为是否就被破坏了?(比如某个人写了个 “距 XXX 还有 YYY 秒”,每秒数字 -1,你突然跳了一段时间,这个时间就不对了。)
    执行到一半的网络请求怎么处理?

    不过看到你这个问题,我觉得 Ctrl+S 有奇效。
    MerlinShieh
        27
    MerlinShieh  
       2020-08-20 19:04:34 +08:00
    Ctrl + S
    ruri
        28
    ruri  
       2020-08-21 14:01:20 +08:00 via Android
    我觉得你这个是伪需求,为什么不尝试扩容内存+chrome 持续后台呢?内存那么便宜。需要休眠就直接休眠操作系统,如果实在需要关机重启的话,那就 ctrl+s 呗。
    Mindjet
        29
    Mindjet  
    OP
       2020-08-21 18:58:16 +08:00
    从这个问题中发现有意思的现象,好像越早的楼层,里面的信息越有价值。

    最有价值的发言全部集中在前 4 位,也就是 codehz 、RiESA 、soji18 和 lxilu 。

    dobelee 用友善的态度提出自己的看法,我解释了在实际场景中存在的问题 很难永远保证不关某个进程。

    最严重的劣化从 17 楼开始,之后的所有内容,包括 alert 、Ctrl+S 这种方法根本就没看正文,可以说毫无价值。

    不知道这是否是普遍的规律,如果是,要做好回复质量劣化的心理预期。
    Mindjet
        30
    Mindjet  
    OP
       2020-08-21 19:40:47 +08:00
    @SimonOne
    谢谢,但是感觉解决此问题的希望不大。
    不过官方有了这个功能也是很好的,能够代替很多第三方的扩展。
    OHyn
        31
    OHyn  
       2020-08-22 03:31:32 +08:00 via Android
    html & css 并不会主动做什么操作。那主要问题就集中在怎么给跑在 V8 里的东西打快照了。。或者说给 V8 进程打快照,有点像进程被系统调度中断的情况。这不是浏览器拓展能搞定的了。
    前几天看到一文章,google 应该正在做类似的事情,目的是为了省电。
    zckevin
        32
    zckevin  
       2020-09-22 21:09:02 +08:00   1
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1645 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 16:20 PVG 00:20 LAX 09:20 JFK 12:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86