我正在阅读GM's wiki以确定@downloadURL
&之间的差异@updateURL
(我没有)。但令我更加困惑的是,两者都没有得到修改:
指定此值是不常见的。大多数脚本都应该省略它。
我对此感到惊讶,因为它是脚本自动更新的唯一方式,我不知道为什么不能使用这些密钥。
维基本身非常缺乏,没有其他论坛消息来源,所以我不得不问这里。也希望了解有关这些密钥的更多详细信息。
答案 0 :(得分:34)
主要由Greasemonkey的首席开发人员阻止使用这些密钥。包括the Tampermonkey team在内的大多数人都不需要这样的警告 另请注意,这些指令始终需要 才能使自动更新生效。
为什么他会说这是不寻常的,而且#34;大多数"脚本应该省略它:
请注意,该wiki条目为made by Greasemonkey's lead developer (Arantius) himself;所以它不仅仅是维基的噪音。
脚本更新分四个阶段进行:
对于这个问题,我们只关注检查和下载阶段。我们规定启用更新,并且更新的脚本有效且安装正确。
更新脚本时,Greasemonkey(和Tampermonkey)下载文件两次:
updateURL
值控制,只是检查文件@version
(如果有)和日期 - 以查看是否有更新可以。由脚本downloadURL
值控制的第二次下载是要安装的新脚本的实际下载。
仅当服务器文件的编号比本地文件高{/ 1}时和/或服务器文件的日期晚于本地文件时,才会进行此下载。 (请注意脚本引擎之间存在严重差异。)
请参阅"为什么您可以使用@downloadURL和@ updateURL",以下为使用2个文件下载的原因。
@version
和@downloadURL
如何运作: @updateURL
仅覆盖默认的内部"下载网址"位置。
@downloadURL
仅覆盖默认的内部"更新网址" (或检查)位置。
在大多数情况下,没有必要这样做。见下文。
@updateURL
,那么Greasemonkey将 两者 从指定位置检查并下载,而不是存储位置。@downloadURL
,那么Greasemonkey将检查(不下载)"更新"给定的位置。因此:@updateURL
会覆盖@updateURL
和仅检查操作的默认位置。
同时:@downloadURL
会覆盖检查和下载的默认位置(除非@downloadURL
存在)。
@updateURL
和@downloadURL
:首先,有2次下载,可能有两个不同的位置,主要是,因速度和带宽原因。 考虑一个非常大的用户脚本有数千个用户的场景:
@updateURL
。userscripts.org
和veryLarge.user.js
veryLarge.meta.js
会在每次使用用户脚本时由开发人员更新,并且只会包含来自veryLarge.meta.js
的{{3}}。veryLarge.user.js
- 节省每个人的时间并节省服务器带宽。如今,Greasemonkey和Tampermonkey都会自动查找veryLarge.meta.js
文件,因此通常无需单独指定。
那么,为什么要明确指定*.meta.js
和/或@downloadURL
?一些可能的原因:
@updateURL
也是一个方便的自我记录"记录/传达用户从中获取脚本的方式。@downloadURL
文件放在与用户脚本不同的服务器上。(警告:我暂时没有对这一切进行过验证。无论如何,Tampermonkey会不断改进(Greasemonkey也会发生很大变化)。)
Tampermonkey在当前文件和新文件上都需要*.meta.js
指令。这就是Tampermonkey如何确定更新是否可用。
Greasemonkey也会使用此方法,因此始终在您可能要自动更新的脚本中包含@version
。
但是,Greasemonkey还要求更新文件更新。如果没有版本,Greasemonkey只会比较日期。请注意,这在过去的Greasemonkey中引起了问题,并且愚蠢地假设许多不同的机器准确地与正确的日期和时间同步。
Greasemonkey默认只会从@version
方案更新,但可以选择设置为允许https://
和http://
方案。
两个引擎都不允许ftp://
方案的更新。