wget без сохранения кэша

Я пытаюсь запустить удаленный скрипт bash, размещенный на github:

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

все работает хорошо, никаких проблем

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

Я пробовал с --no-cache,--delete-after, без успеха

как получить свежую копию wget каждый раз?

5
задан Tiago Caldeira
источник

1 ответов

raw.githubusercontent.com использует CDN, как вы можете проверить, выполнив:

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

Итак, если этот CDN применяет кэширование на основе TTL (и это кажется так, проверяя Cache-Control заголовок 300 секунд), вы застряли с ним. Как вы видели спрашивая с --no-cache ничего не делает, потому что они предназначены для предотвращения злоупотреблений.

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

так.. Просто дождитесь истечения срока жизни TTL и получите новую копию.

вы можете написать скрипт, который опрашивает каждые x секунд (не делайте это слишком быстро, хотя) и ждать, пока вы видите X-Cache: MISS - это скажет вам, что вы получили новую копию. Или что проверяет ETag для изменения.

или вы можете проверить, если github предоставляет вам API, чтобы аннулировать свой код, или способ вызова файлов с последнего коммита, как: https://raw.githubusercontent.com/xxxxx/script.sh?commit=12345

3
отвечен JoeSlav 2018-05-14 15:53:44
источник

Другие вопросы bash linux shell-script wget