Greasemonkey: 让服务器提供一个永远不会(自动)更新的脚本

创建于 2018-02-08  ·  18评论  ·  资料来源: greasemonkey/greasemonkey

(也发布在 https://github.com/Tampermonkey/tampermonkey/issues/499)

Greasy Fork 上的脚本没有@updateURL@downloadURL ,因此在检查更新时,检查更新时将使用最初安装的 URL。 这很好。

Greasy Fork 还允许用户安装以前版本的脚本。 安装 URL 包括一个指示版本的参数。 在这种情况下,更新仍然“有效”,但永远不会有任何变化。 为了在客户端和服务器端节省一些资源,我想指示 Greasemonkey 不检查更新。 有什么我可以在脚本中添加的东西吗?

最有用的评论

让脚本指定自动更新的频率。 当我处于积极的开发阶段时,我可以将其保持在较低的水平,当我稳定下来时,我可以对其进行调整(但如果/当我再次开始更新时,则将其调低)。 并且脚本宿主可以(如果他们无论如何都要修改脚本)覆盖他们认为合适的值(基于安装它的用户数量、服务器资源等)。

听起来很合理。

我想要一个更具描述性的名字,但还没有我喜欢的特定候选人。

也许@updateInterval

所有18条评论

<strong i="5">@updateURL</strong> about:blank + <strong i="7">@downloadURL</strong> about:blank应该这样做(至少可以在 GM 3.x 中使用它来停用自动更新)。

4.x 不支持 updateURL 和 downloadURL。

在 3.x 中,我们只是为此使用了标准的 AOM 控件。

在 4.x 中,我们根本没有自动更新,所以一旦我们这样做,我们就必须将它作为基本功能包含在内。

是否将<strong i="5">@downloadURL</strong> none与 4.x 的计划一致?

哦,我刚刚意识到您是说您希望提供脚本的服务器告诉 GM 它不应该更新脚本。 (哎呀,还没有完全到描述的结尾......)

没有计划在 GM 4 中读取/使用任何@...URL属性的值。在最终编写更新代码之前我不能保证任何事情,但是某种 HTTP 标头感觉比尝试更改源要好的脚本。

OTOH 如果 TM 支持 none 值,则始终需要考虑兼容性。

OP 说:

安装 URL 包括一个指示版本的参数。

由此,我假设查询参数实际上是特定用户脚本的永久链接。 任何自动更新/检查更新功能也很可能使用内部保存的downloadUrl (这只是初始安装的 URL)。 只需很少的更改,我相信我们可以通过在检测用户脚本时添加查询参数匹配来支持这种形式的永久链接。 通过将*://*/*.user.js?*user-script-detect.run.js侦听器来完成。

哦,我刚刚意识到您是说您希望提供脚本的服务器告诉 GM 它不应该更新脚本。

对,就是这样。

某种 HTTP 标头感觉比尝试更改脚本的源要好

Greasy Fork 将脚本存储在 DB 中并重写源代码(例如从 user.js 生成一个 meta.js)。 改变来源对我来说不是问题。 HTTP 标头可能是一个问题,因为脚本可能会通过缓存软件。

由此,我假设查询参数实际上是特定用户脚本的永久链接。

用我的话来说,版本参数提供了一个指向特定用户脚本的特定版本的永久链接。

我相信我们可以通过在检测用户脚本时添加查询参数匹配来支持这种形式的永久链接。

除了链接到特定版本之外,Greasy Fork 不会将 URL 参数用于任何其他目的,但我不能保证将来不会,或者其他站点也不会。

经过进一步思考:跨引擎兼容(@ derjanb ,@gera2ld)需要更多努力,但是:如果我们要让源代码控制更新检查,我会更多地考虑新条目*如:

// <strong i="7">@updates</strong> never
// <strong i="8">@updates</strong> 24h
// <strong i="9">@updates</strong> 7d

让脚本指定自动更新的频率。 当我处于积极的开发阶段时,我可以将其保持在较低的水平,当我稳定下来时,我可以对其进行调整(但如果/当我再次开始更新时,则将其调低)。 并且脚本宿主可以(如果他们无论如何都要修改脚本)覆盖他们认为合适的值(基于安装它的用户数量、服务器资源等)。

我想要一个更具描述性的名字,但还没有我喜欢的特定候选人。

* 虽然对于 never 值,也可以添加<strong i="14">@downloadURL</strong> none支持。

从技术方面来说,应该是…… 像@updatefrequency (太长?)或@updatecycle
并且希望会有一个触发器来手动开始检查所有脚本......

让脚本指定自动更新的频率。 当我处于积极的开发阶段时,我可以将其保持在较低的水平,当我稳定下来时,我可以对其进行调整(但如果/当我再次开始更新时,则将其调低)。 并且脚本宿主可以(如果他们无论如何都要修改脚本)覆盖他们认为合适的值(基于安装它的用户数量、服务器资源等)。

听起来很合理。

我想要一个更具描述性的名字,但还没有我喜欢的特定候选人。

也许@updateInterval

或者干脆@updatetime ...(不是很准确,但很吸引人)

@updatetime让我想到“上午 8:00”而不是频率。

@Sxderp所以你会支持<strong i="6">@updatefreq</strong> 1d吗?

我不是母语人士,但值(即 24 小时)并不是真正的频率。 这是一个间隔或一个时期,对吧? 🤓

<strong i="5">@updateinterval</strong> 1day听起来不错。 我建议不要使用“句号”,因为它在普通英语中有过多的含义(即使它具有精确的科学含义)

@updateinterval@updatetime一样不精确。 您对间隔不感兴趣,但更新之间的(最大)时间跨度...

我真的不喜欢失败,所以我的下一个建议是<strong i="5">@updatespan</strong> 1d ...

@arantius ,什么时候会安排自动更新? 我无法在 FF60 中切换到 3.x。

此页面是否有帮助?
0 / 5 - 0 等级