V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

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

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

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

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

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

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

    就好像 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   ·   实用小工具   ·   2798 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:23 · PVG 17:23 · LAX 01:23 · JFK 04:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.