gpt4 book ai didi

greasemonkey - 更多资源密集型 : Tampermonkey script (for video control) running on ALL domains—or just 1K domains each with its own @include entry?

转载 作者:行者123 更新时间:2023-12-04 04:18:06 25 4
gpt4 key购买 nike

我有一个简短的问题——如果答案是(或应该是)显而易见的,我提前道歉……这个问题可能会暴露我非常基本的[即,基本上不存在]的代码流利程度。

但我在 Tampermonkey 中编写了一个 .js 用户脚本,让我可以更精确地控制 Safari 中的视频播放。我已将其设置为在所有域上运行:

// @include http://*
// @include https://*

虽然到目前为止这对我来说确实有效,但我知道脚本在我 80% 的互联网上运行是不必要的,我这样做不涉及与视频元素的任何交互......所以我经历并编译了~1,000 个特定域的详尽列表,在这些域中运行脚本是有意义的,例如:

// @include     *://*.facebook.com/*
// @include *://*.vimeo.com/*
// @include *://*.youtube.com/*

但是在将 1,000 行代码实际输入到我的 [以前非常娇小!] 用户脚本中之后,我突然意识到——据我所知——我实际上可以大大增加通过强制它现在运行一长串域以查看它是否匹配来运行此脚本所需的系统资源量……也许只是默认运行它可能会减少资源密集度?

哈,与此同时,我也可以想象到处运行它 = 显然更多的资源浪费……但因为我什至不知道如何去测试它(我当然对这里的基础理论没有足够扎实的了解)--> 我想我会把它留给专家,并在这里向你寻求建议!

谢谢你的帮助!! :-)

最佳答案

部分答案,因为它太大而无法发表评论,而且我现在不想设置和运行一些新实验。 (如果有人发布带有更新的、可验证的数字的答案,我会投赞成票。)

下面是当您拥有 Tampermonkey、Violentmonkey 等并安装了用户脚本时会发生什么的粗略描述:

  1. 您访问的每个页面都会根据 @include 检查, @match , 和 @exclude 每个事件用户脚本的指令。更聪明的引擎会检查 @exclude如果找到匹配项,则首先停止。

    一些引擎比其他引擎更擅长此检查,理想情况下,站点匹配信息将保存在内存中以获得最大速度。

  2. 每个 <frame>您访问的所有页面上的或 iframe 都会根据 @include 检查, @match , 和 @exclude每个事件用户脚本的指令,除非该脚本有 @noframes设置。

  3. 如果脚本匹配页面(或框架),则 Tampermonkey(等)必须:
    (A) 获取脚本代码和任何数据——通常来自磁盘(慢)。
    (B) 然后创建某种级别的沙箱——取决于引擎、浏览器和 @grant模式。
    (C) 将脚本注入(inject)上述沙箱——几乎总是由匿名函数包装——并运行它。

  4. 然后,用户脚本将根据其代码使用资源。

一般情况:

  1. @match@include 表现更好(最后一次检查是几年前) .如果要使用 1000 行,请使用 @match过度包含。

  2. 使用 @noframes除非你有理由不这样做。

  3. 第 1 步和第 2 步理想情况下可以全部凭内存完成(需要查看各种引擎当前在做什么),很多 @include s 可以在注入(inject)一个用户脚本的同时处理。 (有人想尝试收集一些数字吗?)

  4. 如果用户脚本或其数据(@require 文件、@resource 文件、GM_setValue 数据)需要从磁盘中获取,那么这是一个相对巨大的时间延迟。 (但仍然比从互联网上获取东西要快。)

最后,维护大量网站、每次编辑用户脚本文件所花费的时间和可能的压力必须与您的脚本的侵入性进行比较强>.

如果是我,脚本只延迟了不到 300 毫秒的页面,我会捂着 Nose 使用:

// @match    *://*/*
// @noframes

但是,如果脚本更具侵入性、更慢或更耗费资源,您可以使用混合方法...
保留站点列表以在 GM_setValue完全运行数据和/或 @resource d 文件。

这样您就可以使用菜单命令等方式即时编辑列表;或者通过 Tampermonkey 脚本数据编辑器;甚至通过您为此目的创建的按钮。然而,所有这些都超出了这个问题的范围。

关于greasemonkey - 更多资源密集型 : Tampermonkey script (for video control) running on ALL domains—or just 1K domains each with its own @include entry?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55212542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com