web-dev-qa-db-ja.com

キャッシュを保持せずにwget

Githubでホストされているリモートbashスクリプトを実行しようとしています:

wget -O - https://raw.githubusercontent.com/xxxxx/script.sh

すべて問題なく動作します

しかし、上記のスクリプトを更新し、同じコマンドを実行すると、古いスクリプトが処理されます

--no-cache--delete-afterで試しましたが、成功しませんでした

毎回wgetの新しいコピーを取得する方法は?

3
OWADVL

raw.githubusercontent.comはCDNを使用しています。これは、次の方法で検査できます。

$ Dig raw.githubusercontent.com +short
github.map.fastly.net.
1.2.3.4

そのため、そのCDNがTTLベースのキャッシングを実施している場合(300秒のCache-Controlヘッダーをチェックすることでそう思われます)、それで行き詰まります。 --no-cacheで質問しても何も起こりません。これは、不正使用を防ぐために設計された方法だからです。

あなたはそれを多くのhackyの方法でバイパスするかもしれません、それは私がリストしませんが、あなたは基本的にgithubによって示されたポリシーを回避しようとしています、そして私はそうします助言。さらに、今日機能するメソッドは、明日または後続の呼び出しでプログラム的に機能しない可能性があります。

つまり、TTLの有効期限が切れるのを待って、新しいコピーを取得するだけです。

X秒ごとにポーリングするスクリプトを作成して(ただし、速すぎないでください)、X-Cache: MISSが表示されるまで待ちます。これにより新しいコピーが取得されたことがわかります。または、ETagに変更がないかチェックします。

または、githubが独自のコードを無効にするAPIを提供しているかどうか、または次のような最新のコミットでファイルを呼び出す方法を確認することもできます。 https://raw.githubusercontent.com/xxxxx/script.sh? commit = 12345

5
JoeSlav