gpt4 book ai didi

greasemonkey - 为什么 downloadURL 和 updateURL 键的使用被称为不寻常,它们是如何工作的?

转载 作者:行者123 更新时间:2023-12-03 09:22:45 30 4
gpt4 key购买 nike

我在看 GM's wiki确定@downloadURL之间的区别& @updateURL (我没有)。但更让我困惑的是,两者都不建议:

It is unusual to specify this value. Most scripts should omit it.



我对此感到惊讶,因为它是脚本自动更新的唯一方法,而且我不明白为什么不应该使用这些 key 。

维基本身非常缺乏,也没有建议其他论坛来源,所以我不得不在这里问。也希望了解有关这些键的更多详细信息。

最佳答案

Greasemonkey 的主要开发人员主要不鼓励使用这些 key 。大多数其他人,包括 the Tampermonkey team觉得不需要这样的警告。
另请注意,这些指令是 不是 总是需要自动更新才能工作。

他会说这是不寻常的并且“大多数”脚本应该省略它的一些原因:

  • 在大多数情况下不需要它,请参阅下面的更新如何工作以及这些指令如何工作。
  • 添加和使用这些指令只是脚本编写者必须检查和维护的更多项目。如果不需要,为什么要工作?
  • 更新实现和那些指令 have been buggy并且,也许在 Greasemonkey 中没有很好地实现。
  • Tampermonkey 和其他引擎以稍微不同的方式实现更新和那些指令。这意味着在 Tampermonkey 上运行的代码可能在 Greasemonkey 上失败。

  • 请注意,该维基条目是 made by Greasemonkey's lead developer (Arantius) himself ;所以这不仅仅是维基的噪音。

    更新的工作原理:

    脚本更新分 4 个阶段进行:
  • 启用 阶段和/或“强制”更新。
  • 检查 阶段。
  • 下载阶段。
  • 解析 和安装阶段。

  • 对于这个问题,我们只关心检查和下载阶段。我们规定启用更新并且更新的脚本有效并正确安装。

    更新脚本时,Greasemonkey(和 Tampermonkey) 下载文件两次 :
  • 第一次下载,由脚本的updateURL控制值,只是检查文件的@version (如果有)和日期——查看是否有可用更新。
  • 第二次下载,由脚本的downloadURL控制值,是要安装的新脚本的实际下载。
    仅当服务器文件具有更高的 @version 时才会进行此下载。编号比本地文件和/或如果服务器文件的日期晚于本地文件。 (请注意,脚本引擎之间存在重大差异。)

    有关使用 2 个文件下载的原因,请参阅下面的“为什么您可能会使用 @downloadURL 和 @updateURL”。



  • 如何 @downloadURL@updateURL工作:
    @downloadURL仅覆盖默认的内部“下载 URL”位置。 @updateURL仅覆盖默认的内部“更新 URL”(或检查)位置。
    在大多数情况下,没有必要这样做。见下文。
  • 当您安装用户脚本时, Greasemonkey 自动记录安装位置。 不需要元指令。
    默认情况下,Greasemonkey 将在此处检查更新并下载任何更新。
  • 但是,如果 @downloadURL指定,那么 Greasemonkey 将 两者 从指定位置而不是存储位置检查和下载。
  • 但是,如果 @updateURL指定,然后 Greasemonkey 将从给定的“更新”位置检查(而不是下载)。

  • 所以: @updateURL覆盖两者 @downloadURL以及仅用于检查操作的默认位置。
    同时: @downloadURL覆盖检查和下载的默认位置(除非 @updateURL 存在)。



    为什么你可能会使用 @downloadURL@updateURL :

    一、 有 2 次下载 可能主要是两个不同的位置 出于速度和带宽的原因 .
    考虑一个非常大的用户脚本有数千个用户的场景:
  • 这些用户的浏览器会不断冲击主机服务器,检查是否有可用的更新。大多数时候,人们不会这样做,并且会不必要地一遍又一遍地下载大文件。
    对于像现在不存在的 userscripts.org 这样的网站来说,这肯定是一个问题。 .
  • 因此开发了一个系统,其中创建了一个单独的文件来保存版本(和日期)信息。所以服务器现在会有 veryLarge.user.jsveryLarge.meta.js
  • veryLarge.meta.js每次用户脚本都会更新(由开发人员),并且只包含 the Metadata Block来自 veryLarge.user.js .
  • 所以成千上万的浏览器只会重复下载更小的veryLarge.meta.js -- 节省大家的时间,节省服务器带宽。

  • 如今,Greasemonkey 和 Tampermonkey 都会自动寻找 *.meta.js文件,所以 通常不需要单独指定一个。

    所以, 为什么要明确指定 @downloadURL和/或 @updateURL ? 一些可能的原因:
  • 您的脚本可以通过多种方式或从多个来源(剪切和粘贴、本地复制的文件、辅助服务器等)安装,并且您只想维护一个“主”版本。
  • 您要to track how many initial and/or upgrade downloads your script has .
  • @downloadURL也是一种方便的“自我记录”方式,用于记录/传达用户从何处获取脚本。
  • 您想要 *.meta.js由于某种原因,文件位于与用户脚本不同的服务器上。
  • 可能是 http 与 https 问题(总有一天需要深入研究)。
  • 您是个坏人,您希望脚本在 future 某个日期从您控制的服务器更新恶意版本——这不是安装脚本的地方。


  • Greasemonkey 和 Tampermonkey 之间的一些区别:

    (警告:我有一段时间没有验证所有这些。随着 Tampermonkey 不断改进,无论如何都会发生变化(并且 Greasemonkey 也发生了很多变化)。)
  • Tampermonkey 需要一个 @version当前和较新文件上的指令。这就是 Tampermonkey 确定更新是否可用的方式。

    Greasemonkey 也会用这个方法,所以 始终包括 @version在脚本中,您可能想要自动更新。

    但是,Greasemonkey 还要求更新文件更新。如果不存在版本,Greasemonkey 只会比较日期。请注意,这在过去曾导致 Greasemonkey 出现问题,并且还愚蠢地假设许多不同的机器与正确的日期和时间准确同步。
  • Greasemonkey 只会从 https:// 更新方案默认,但可以选择设置为允许 http://ftp://计划。
  • 两个引擎都不允许来自 file:// 的更新计划。
  • 关于greasemonkey - 为什么 downloadURL 和 updateURL 键的使用被称为不寻常,它们是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38023717/

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