Почему использование ключей downloadURL & updateURL называется необычным и как они работают?

Я читал Вики GM определить разницу между @downloadURL & @updateURL (чего я не делал). Но что еще больше смутило меня, что оба они неразвитые:

необычно указывать это значение. Большинство сценариев должны опустить его.

Я удивлен этим, так как это единственный способ автоматического обновления скриптов, и я не вижу, почему эти ключи не должны использоваться.

сама Вики довольно отсутствует и нет другого форума источники информированы, поэтому я должен спросить Здесь. Также был бы признателен за более подробную информацию об этих ключах.

1 ответов


использование этих ключей не рекомендуется главным образом ведущим разработчиком Greasemonkey. Большинство других, включая команда Tampermonkey не чувствую необходимости в таком предупреждении.
Также обратите внимание, что эти директивы не всегда требуется для автоматического обновления для работы.

некоторые причины, по которым он сказал бы, что это необычно и что" большинство " сценариев должны опустить его:

  1. в большинстве случаев это не требуется, см. Как обновления работа и как эти директивы работают, ниже.
  2. добавление и использование этих директив - это просто дополнительные элементы, которые должен проверять и поддерживать сценарист. Зачем делать работу, если она не нужна?.
  3. реализация обновления и эти директивы были багги и, возможно, не очень хорошо реализован в Greasemonkey.
  4. Tampermonkey и другие движки реализуют обновления и эти директивы немного по-другому. Это означает, что код это работает на Tampermonkey может потерпеть неудачу на Greasemonkey.

обратите внимание, что эта запись wiki была сделано самим ведущим разработчиком Greasemonkey (Arantius); так что это был не просто шум wiki.


как работают обновления:

обновления скриптов проводятся в 4 этапа:

  1. на включено фаза и / или" принудительные " обновления.
  2. на Регистрация этап.
  3. в скачать этап.
  4. на парсить и установить фазы.

по этому вопросу нас интересует только Регистрация и скачать фазы. Мы оговариваем, что обновления включены и что обновленный сценарий был действителен и установлен правильно.

при обновлении скриптов Greasemonkey (и Tampermonkey) загрузка файлов в два раза:

  1. первый скачать, управляется скриптом updateURL значение, просто чтобы проверить файл @version (если есть) и date -- чтобы узнать, доступно ли обновление.
  2. вторая загрузка, контролируемая скриптом downloadURL значение-это фактическая загрузка нового сценария для установки. Эта загрузка будет происходить только в том случае, если файл сервера имеет более высокий @version номер, чем локальный файл и / или если файл сервера имеет более позднюю дату, чем локальный файл. (Остерегайтесь, что есть критические различия здесь между движками скриптов.)

    см. "Почему вы можете использовать @downloadURL и @updateURL", ниже, по причинам, по которым используются 2 загрузки файлов.



как @downloadURL и @updateURL работы:

@downloadURL просто переопределяет внутреннее местоположение "url загрузки" по умолчанию.
@updateURL просто переопределяет внутренний "url обновления" по умолчанию (или проверяет) местоположение.
В большинстве случаев в этом нет необходимости. Видеть, под.

  1. при установке userscript,Greasemonkey автоматически записывает расположение установки. никакая директива meta не необходима. По умолчанию, это где Greasemonkey будет как Регистрация для обновления и скачать обновления.
  2. но если @downloadURL указывается, то Greasemonkey будет и проверьте и загрузите из указанного местоположения, а не из сохраненного местоположение.
  3. но если @updateURL указано, затем Greasemonkey проверит (не загружает) из указанного местоположения" update".

так: @updateURL переопределяет как @downloadURL и расположение по умолчанию для проверка операции только.
В то время как: @downloadURL переопределяет по умолчанию для проверка и скачать (если @updateURL присутствует).



почему вы может использовать @downloadURL и @updateURL:

во-первых,есть 2 загрузки и потенциально 2 различных местоположения в основном по причинам скорости и пропускной способности. Рассмотрим сценарий, когда очень большой userscript имеет тысячи пользователей:

  • браузеры этих пользователей будут постоянно забивать сервер хоста, проверяя, доступно ли обновление. В большинстве случаев этого не будет, и большой файл будет загружаться снова и снова излишне. Это должно быть проблемой для таких сайтов, как теперь несуществующий userscripts.org.
  • таким образом, разработана система, в которой отдельный файл был создан только для хранения информации о версии (и дате). Таким образом, сервер теперь будет иметь veryLarge.user.js и veryLarge.meta.js
  • veryLarge.meta.js будет обновляться (разработчиком) каждый раз, когда userscript был и будет просто содержать блок метаданных С veryLarge.user.js.
  • поэтому тысячи браузерах просто неоднократно скачать гораздо меньше veryLarge.meta.js -- экономия времени всех и сохранение пропускной способности сервера.

в настоящее время, как Greasemonkey и Tampermonkey будет автоматически искать , так что обычно нет необходимости указывать отдельно.

и зачем явно указывать @downloadURL и/или @updateURL? возможные причины:

  1. ваш скрипт может быть установлен несколькими способами или с несколько источников (вырезать и вставить, локально скопированный файл, вторичный сервер и т. д.) и вы хотите сохранить только одну версию "master".
  2. вы хотите чтобы отслеживать, сколько начальных и / или обновления загрузок ваш скрипт имеет.
  3. @downloadURL также удобный "нагляден" способ записи/передачи, где пользователь получил сценарий от.
  4. вы хотите *.meta.js файл на другом сервере, чем userscript для некоторых причина.
  5. возможно, http по сравнению с https-проблемами (нужно вникнуть в это когда-нибудь).
  6. вы плохой парень, и вы хотите, чтобы скрипт обновил вредоносную версию в какой-то будущей дате с сервера, который вы контролируете-это не то, откуда был установлен скрипт.


некоторые различия между Greasemonkey и Tampermonkey:

(предупреждение: я не проверял все это время. Подлежать изменение в любом случае, как Tampermonkey постоянно совершенствуется (и Greasemonkey меняется тоже много).)

  1. Tampermonkey требует @version директива как для текущего, так и для более нового файла. Так Tampermonkey определяет, доступно ли обновление.

    Greasemonkey также будет использовать этот метод, поэтому всегда включать @version в скриптах может потребоваться автоматическое обновление.

    однако Greasemonkey также требует, чтобы файл обновления будет новее. И если нет версии, Greasemonkey будет просто сравнивать только даты. Обратите внимание, что это вызвало проблемы в Greasemonkey в прошлом, а также глупо предполагает, что многие различные машины точно синхронизированы с правильной датой и временем.

  2. Greasemonkey будет обновляться только из https:// схемы по умолчанию, но может быть дополнительно установлен в allow http:// и ftp:// схемы.

  3. обоих двигателей никогда не разрешайте обновления из file:// схемы.