2014-11-12 31 views
17

W jednym z mojego projektu używam zewnętrznego odnośnik do wyświetlania ekranu poprzez stronę GitHub, który automatycznie analizuje README.rstJak zmusić obrazu (cache) Aktualizacja w README.rst na GitHub

GitHub page of ROyWeb

zaktualizowałem ten zrzut ekranu na moim serwerze WWW kilka razy w ciągu ostatnich tygodni, i zdałem sobie sprawę, że nie jest aktualizowana na stronie github od ... dobrze myślę, że nigdy aktualizowane ;-) gitHub jakoś pobraniu obraz i ładuje go z jego serwerów pamięci podręcznej.

W README.rst, jest wyraźnie poprawne Link:

Actual link to the ROyWeb screenshot

który można potwierdzić, kiedy załadować plik RAW:

raw README.txt on GitHub

ale kiedy sprawdź adres URL wyświetlanego obrazu na stronie GitHub, otrzymuję:

GitHub cached screenshot of ROyWeb

Czy ktoś wie, jak wymusić "recache"?

+0

byłbym również zainteresowany, aby poznać odpowiedź na to pytanie. – b85411

+0

Następnie zagłosuj na pytanie @ b85411;) – tamasgal

Odpowiedz

35
curl -X PURGE {url of cached badge image} 
+6

To działało idealnie – mauron85

+1

To nie działa dla mnie. Czy istnieje inne podejście? Moje readme to bałagan brakujących obrazów (głównie odznaki shields.io). Czy jest to znany błąd z jakąkolwiek perspektywą naprawy? – orome

+0

Działa dla mnie i dobra odpowiedź –

2

Wierzę, że zrozumiałem, jak to zrobić teraz. Zamiast serwować na przykład plik raw png, wyświetl obraz w pliku php (wiele przykładów na SO).

Gdy jesteś wyświetlania obrazu z PHP, należy dodać następujące nagłówki:

header('Cache-Control: no-cache'); 
header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', time() - 36000)); 

ustawiając no-cache i posiadające cache wygaśnie w przeszłości, odkryli, że GitHub za CDN aktualizuje obrazów automatycznie na każdy odśwież.

2

Spojrzałem na to, co robi shields.io.

To odróżnia ten nagłówek (Source):

Cache-Control: max-age=2592000 
+1

Widziałem ten pomysł [tutaj] (https://github.com/github/markup/issues/224), ale nie miałem pojęcia, która składnia ma być używana z surowym adresem URL. Po drugim łączu pokazałem mi, jak to zrobić. Dzięki. – Mars