2

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

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

Все работает хорошо, проблем нет

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

Я пытался с --no-cache , --delete-after , но безуспешно

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

1 ответ1

3

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

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .