Почему использование ключей 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://
схемы по умолчанию, но может быть дополнительно установлен в allowhttp://
иftp://
схемы.обоих двигателей никогда не разрешайте обновления из
file://
схемы.