wget sem manter o cache

2

Estou tentando executar um script bash remoto hospedado no github:

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

Tudo funciona bem, sem problemas

Mas quando atualizo o script acima e executo o mesmo comando, ele processa o script antigo

Eu tentei com --no-cache , --delete-after , sem sucesso

Como obter uma nova cópia do wget toda vez?

    
por OWADVL 14.05.2018 / 17:09

1 resposta

3

raw.githubusercontent.com está usando um CDN, como você pode inspecionar fazendo:

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

Portanto, se o CDN estiver impondo um cache baseado em TTL (e parece que, ao verificar o Cache-Control de 300 segundos), você está preso a ele. Como você viu, perguntar com --no-cache não faz nada porque é assim que eles são projetados para evitar abusos.

Você pode contorná-lo de muitas maneiras hacky , que não vou listar, mas você está basicamente tentando contornar uma política definida pelo github e eu aconselho contra. Além disso, um método que funciona hoje pode não funcionar programaticamente amanhã ou em chamadas subsequentes.

Então .. Aguarde até que o TTL expire e obtenha a nova cópia.

Você pode escrever um script que pesquisa cada x segundos (não faça isso rápido demais) e espere até ver X-Cache: MISS - que lhe dirá que você recebeu uma nova cópia. Ou que verifica o ETag para alterações.

Ou você pode verificar se o github fornece uma API para invalidar seu próprio código ou uma maneira de chamar arquivos com o commit mais recente, como: link

    
por 14.05.2018 / 17:47