Mam ogólne pytanie dotyczące buforowania wywołań API, w tym przypadku wywołań interfejsu API Github.Buforowanie wywołań API Github API
Załóżmy, że mam stronę w mojej aplikacji, która pokazuje nazwy plików z repozytorium i treść README. Oznacza to, że będę musiał wykonać kilka wywołań API, aby je odzyskać.
Teraz, powiedzmy, że chcę dodać coś jak memcached pomiędzy, więc nie robię tych połączeń w kółko, jeśli nie trzeba.
Jak normalnie byś się tym zajmował? Jeśli nie włączam webhooka na Githubie, nie wiem, czy pamięć podręczna ma wygasnąć. Zawsze mogłem wykonać jedno połączenie, aby uzyskać bieżący sha HEAD, a jeśli to się nie zmieniło, skorzystaj z pamięci podręcznej. Ale to na poziomie repozytorium, a nie na poziomie pliku.
Mogę sobie wyobrazić, że mógłbym zrobić coś takiego z obiektami-sha, ale jeśli potrzebuję zadzwonić do API mimo to uzyskać to, to pokonuje cel buforowania.
Jak byś się tym zajmował? Wiem, że usługa taka jak prose.io nie ma obecnie buforowania, ale jeśli tak, to jakie byłoby podejście?
Dzięki
Dzięki Ivan. To jest świetne. Korzystanie z pamięci podręcznej HTTP oznacza również, że nie potrzebuję własnej trasy interfejsu API warstwy pośredniej, aby cacheować rzeczy w memcached. W ten sposób mogę przejść bezpośrednio przez CORS od klienta (może używając lokalnej pamięci, jeśli jest taka potrzeba). – Ronze
Czy to możliwe, że nie wszystkie punkty końcowe z github zwracają nagłówek 'Last-Modified'? Na przykład wywołanie do punktu końcowego kamieni milowych nie zwraca żadnego nagłówka 'Last-Modified': curl -i https://api.github.com/repos/p1nox/repos/milestones Ale zwraca' ETag', więc jedynym sposobem buforowania tego rodzaju zasobów jest użycie kombinacji tokena-etag, prawda? – p1nox
@ p1nox Tak, to możliwe. Jeśli przeczytasz ten https://developer.github.com/v3/#conditional-requests, zauważysz tę część: "Większość odpowiedzi zwraca nagłówek ETag, wiele odpowiedzi zwraca również nagłówek Last-Modified." Zauważ, że mówi "większość" i "wiele", a nie "wszystko". –