私は GMのwiki を読んでいて、@downloadURL
&@updateURL
(私はしませんでした)。しかし、どちらも助言されていないことでさらに混乱しました:
この値を指定することはまれです。ほとんどのスクリプトでは省略してください。
スクリプトが自動更新する唯一の方法であり、これらのキーを使用しない理由がわからないので、私はそれに驚いています。
ウィキ自体はかなり不足しており、他のフォーラムのソースは勧められないので、私はここで尋ねなければなりません。また、これらのキーについてのより詳細な情報をいただければ幸いです。
これらのキーの使用は、主にGreasemonkeyのリード開発者によって推奨されていません。 Tampermonkeyチーム を含む他のほとんどの人は、そのような警告の必要はないと感じています。
また、これらのディレクティブはnotであり、自動更新が機能するために常に必要であることに注意してください。
それが異常であり、「ほとんどの」スクリプトがそれを省略すべきであると彼が言う理由のいくつか:
Wikiエントリは Greasemonkeyのリード開発者(Arantius)自身が作成したものであることに注意してください ;ですから、wikiノイズだけではありませんでした。
スクリプトの更新は4つのフェーズで行われます。
この質問では、checkとdownloadフェーズのみに関係しています。更新が有効であり、更新されたスクリプトが有効であり、正しくインストールされていることを規定しています。
スクリプトを更新するとき、Greasemonkey(およびTampermonkey)ファイルを2回ダウンロード:
updateURL
値によって制御される最初のダウンロードは、ファイルの@version
(存在する場合)と日付をチェックして、更新が利用可能かどうかを確認するだけです。2番目のダウンロードは、スクリプトのdownloadURL
値によって制御され、インストールする新しいスクリプトの実際のダウンロードです。このダウンロードは、サーバーファイルのローカルファイルよりも@version
番号が大きい場合、またはサーバーファイルの日付がローカルファイルより新しい場合にのみ発生します。 (ここでは、スクリプトエンジン間に重要な違いがあることに注意してください。)
2つのファイルのダウンロードが使用される理由については、下記の「@downloadURLと@updateURLを使用する理由」をご覧ください。
@downloadURL
と@updateURL
の仕組み:@downloadURL
は、デフォルトの内部「ダウンロードURL」の場所を上書きするだけです。@updateURL
は、デフォルトの内部「更新URL」(またはチェック)の場所をオーバーライドするだけです。
ほとんどの場合、これを行う必要はありません。下記参照。
@downloadURL
が指定されている場合、Greasemonkeyはbothをチェックして、保存されている場所ではなく、指定された場所からダウンロードします。@updateURL
が指定されている場合、Greasemonkeyは指定された「更新」場所から(ダウンロードではなく)チェックします。つまり、@updateURL
は、@downloadURL
とchecking操作のみのデフォルトの場所の両方をオーバーライドします。
While:@downloadURL
は、checkingとdownloadingの両方のデフォルトの場所を上書きします(@updateURL
が存在します)。
@downloadURL
および@updateURL
を使用する理由:まず、 2つのダウンロードがあり、速度と帯域幅の理由で主に 2つの異なる場所がある可能性があります。非常に大きなユーザースクリプトに数千人のユーザーがいるシナリオを考えてみましょう。
userscripts.org
などのサイトで問題になるはずです。veryLarge.user.js
とveryLarge.meta.js
veryLarge.meta.js
は、ユーザースクリプトが更新されるたびに(開発者によって)更新され、 メタデータブロックveryLarge.user.js
のみが含まれます。veryLarge.meta.js
を繰り返しダウンロードするだけで、誰もが時間を節約し、サーバーの帯域幅を節約できます。現在、GreasemonkeyとTampermonkeyの両方が*.meta.js
ファイルを自動的に検索するため、通常は個別に指定する必要はありません。
それで、@downloadURL
や@updateURL
?を明示的に指定する理由
@downloadURL
は、ユーザーがスクリプトを入手した場所を記録/伝達するための便利な「自己文書化」方法でもあります。*.meta.js
ファイルをユーザースクリプトとは別のサーバーに配置する必要があります。(警告:私はしばらくこのすべてを確認していません。Tampermonkeyは常に改善されているため、変更される可能性があります(Greasemonkeyも大幅に変更されます)。)
Tampermonkeyでは、現在のファイルと新しいファイルの両方に@version
ディレクティブが必要です。これは、Tampermonkeyがアップデートが利用可能かどうかを判断する方法です。
Greasemonkeyもこのメソッドを使用するため、自動更新するスクリプトに常に@version
を含めます。
ただし、Greasemonkeyでは、更新ファイルが新しいことも必要です。また、バージョンが存在しない場合、Greasemonkeyは日付のみを比較します。これは過去のGreasemonkeyで問題を引き起こし、多くの異なるマシンが正しい日付と時刻で正確に同期されていると愚かに仮定していることに注意してください。
Greasemonkeyは、デフォルトではhttps://
スキームからのみ更新しますが、オプションでhttp://
およびftp://
スキームを許可するように設定できます。
どちらのエンジンも、file://
スキームからの更新を許可しません。