wget โดยไม่ต้องเก็บแคช


2

ฉันพยายามเรียกใช้สคริปต์ทุบตีระยะไกลที่โฮสต์บน Github:

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

ทุกอย่างใช้งานได้ดีไม่มีปัญหา

แต่เมื่อฉันอัปเดตสคริปต์ด้านบนและฉันเรียกใช้คำสั่งเดียวกันมันจะประมวลผลสคริปต์เก่า

ฉันลองด้วย --no-cache, --delete-after, ปราศจากความสำเร็จ

ทำอย่างไรจึงจะได้สำเนาสดใหม่ทุกครั้ง?

คำตอบ:


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 ไม่ทำอะไรเลยเพราะนั่นคือวิธีที่พวกเขาออกแบบมาเพื่อป้องกันการละเมิด

คุณอาจจะข้ามมันในหลาย ๆ hacky วิธีที่ฉันจะไม่แสดง แต่โดยทั่วไปคุณกำลังพยายามหลีกเลี่ยงนโยบายที่กำหนดโดย github และฉันอยากจะแนะนำ ยิ่งไปกว่านั้นวิธีการที่ใช้งานได้ในปัจจุบันอาจไม่สามารถใช้งานได้ในวันพรุ่งนี้หรือโดยการโทร

ดังนั้น .. เพียงแค่รอให้ TTL หมดอายุและรับสำเนาใหม่

คุณอาจเขียนสคริปต์ที่โพลทุก ๆ วินาที (อย่าทำให้เร็วเกินไป) และรอจนกว่าคุณจะเห็น X-Cache: MISS - นั่นจะบอกคุณว่าคุณได้รับสำเนาใหม่ หรือว่าตรวจสอบ ETag สำหรับการเปลี่ยนแปลง

หรือคุณอาจตรวจสอบว่า github ให้ API กับคุณเพื่อทำให้รหัสของคุณเป็นโมฆะหรือวิธีเรียกไฟล์ที่มีคอมมิทล่าสุดเช่น: https://raw.githubusercontent.com/xxxxx/script.sh?commit=12345

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.