Почему использование ключей downloadURL & updateURL называется необычным и как они работают?
Я читал Вики GM определить разницу между @downloadURL & @updateURL (чего я не делал). Но что еще больше смутило меня, что оба они неразвитые:
необычно указывать это значение. Большинство сценариев должны опустить его.
Я удивлен этим, так как это единственный способ автоматического обновления скриптов, и я не вижу, почему эти ключи не должны использоваться.
сама Вики довольно отсутствует и нет другого форума источники информированы, поэтому я должен спросить Здесь. Также был бы признателен за более подробную информацию об этих ключах.
1 ответов
использование этих ключей не рекомендуется главным образом ведущим разработчиком Greasemonkey.  Большинство других, включая команда Tampermonkey не чувствую необходимости в таком предупреждении.
Также обратите внимание, что эти директивы не всегда требуется для автоматического обновления для работы.
некоторые причины, по которым он сказал бы, что это необычно и что" большинство " сценариев должны опустить его:
- в большинстве случаев это не требуется, см. Как обновления работа и как эти директивы работают, ниже.
- добавление и использование этих директив - это просто дополнительные элементы, которые должен проверять и поддерживать сценарист. Зачем делать работу, если она не нужна?.
- реализация обновления и эти директивы были багги и, возможно, не очень хорошо реализован в Greasemonkey.
- Tampermonkey и другие движки реализуют обновления и эти директивы немного по-другому. Это означает, что код это работает на Tampermonkey может потерпеть неудачу на Greasemonkey.
обратите внимание, что эта запись wiki была сделано самим ведущим разработчиком Greasemonkey (Arantius); так что это был не просто шум wiki.
как работают обновления:
обновления скриптов проводятся в 4 этапа:
- на включено фаза и / или" принудительные " обновления.
- на Регистрация этап.
- в скачать этап.
- на парсить и установить фазы.
по этому вопросу нас интересует только Регистрация и скачать фазы. Мы оговариваем, что обновления включены и что обновленный сценарий был действителен и установлен правильно.
при обновлении скриптов Greasemonkey (и Tampermonkey) загрузка файлов в два раза:
- первый скачать, управляется скриптом updateURLзначение, просто чтобы проверить файл@version(если есть) и date -- чтобы узнать, доступно ли обновление.
- 
вторая загрузка, контролируемая скриптом downloadURLзначение-это фактическая загрузка нового сценария для установки. Эта загрузка будет происходить только в том случае, если файл сервера имеет более высокий@versionномер, чем локальный файл и / или если файл сервера имеет более позднюю дату, чем локальный файл. (Остерегайтесь, что есть критические различия здесь между движками скриптов.)см. "Почему вы можете использовать @downloadURL и @updateURL", ниже, по причинам, по которым используются 2 загрузки файлов. 
как @downloadURL и @updateURL работы:
@downloadURL просто переопределяет внутреннее местоположение "url загрузки" по умолчанию.@updateURL просто переопределяет внутренний "url обновления" по умолчанию (или проверяет) местоположение.
В большинстве случаев в этом нет необходимости. Видеть, под.
- при установке userscript,Greasemonkey автоматически записывает расположение установки. никакая директива meta не необходима. По умолчанию, это где Greasemonkey будет как Регистрация для обновления и скачать обновления.
- но если @downloadURLуказывается, то Greasemonkey будет и проверьте и загрузите из указанного местоположения, а не из сохраненного местоположение.
- но если @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? возможные причины:
- ваш скрипт может быть установлен несколькими способами или с несколько источников (вырезать и вставить, локально скопированный файл, вторичный сервер и т. д.) и вы хотите сохранить только одну версию "master".
- вы хотите чтобы отслеживать, сколько начальных и / или обновления загрузок ваш скрипт имеет.
- 
@downloadURLтакже удобный "нагляден" способ записи/передачи, где пользователь получил сценарий от.
- вы хотите *.meta.jsфайл на другом сервере, чем userscript для некоторых причина.
- возможно, http по сравнению с https-проблемами (нужно вникнуть в это когда-нибудь).
- вы плохой парень, и вы хотите, чтобы скрипт обновил вредоносную версию в какой-то будущей дате с сервера, который вы контролируете-это не то, откуда был установлен скрипт.
некоторые различия между Greasemonkey и Tampermonkey:
(предупреждение: я не проверял все это время. Подлежать изменение в любом случае, как Tampermonkey постоянно совершенствуется (и Greasemonkey меняется тоже много).)
- 
Tampermonkey требует @versionдиректива как для текущего, так и для более нового файла. Так Tampermonkey определяет, доступно ли обновление.Greasemonkey также будет использовать этот метод, поэтому всегда включать @versionв скриптах может потребоваться автоматическое обновление.однако Greasemonkey также требует, чтобы файл обновления будет новее. И если нет версии, Greasemonkey будет просто сравнивать только даты. Обратите внимание, что это вызвало проблемы в Greasemonkey в прошлом, а также глупо предполагает, что многие различные машины точно синхронизированы с правильной датой и временем. 
- Greasemonkey будет обновляться только из - https://схемы по умолчанию, но может быть дополнительно установлен в allow- http://и- ftp://схемы.
- обоих двигателей никогда не разрешайте обновления из - file://схемы.
