API 호출 캐싱과 관련된 일반적인 질문이 있는데이 경우 Github API를 호출합니다.캐싱 Github API 호출
내 애플리케이션에 repo의 파일 이름과 README의 내용을 보여주는 페이지가 있다고 가정 해 보겠습니다. 즉,이를 검색하기 위해 몇 가지 API 호출을 수행해야합니다.
자, memcached와 같은 것을 추가하고 싶다고 가정 해 봅시다. 필요하지 않으면 계속해서 이러한 호출을 반복하지 않을 것입니다.
어떻게 평상시에 어떻습니까? Github에서 웹 훅을 활성화하지 않으면 캐시가 만료되는지 여부를 알 수 없습니다. HEAD의 현재 sha를 얻기 위해 항상 한 번 호출 할 수 있으며, 변경하지 않았다면 대신 캐시를 사용합니다. 하지만 이는 파일 수준이 아니라 레포 수준입니다.
나는 object-sha와 비슷한 것을 할 수 있다고 상상할 수 있지만 어쨌든 API를 호출해야 캐싱의 목적을 상실합니다.
어떨까요? prose.io와 같은 서비스가 지금은 캐싱이 없다는 것을 안다.하지만해야한다면, 접근 방법은 무엇인가?
고마워요.
감사합니다. Ivan. 이것은 위대합니다. HTTP 캐시를 사용한다는 것은 memcached의 캐시에 내 자신의 중간 계층 API 경로가 필요 없다는 것을 의미합니다. 이 방법으로 클라이언트에서 CORS를 통해 직접 이동할 수 있습니다 (필요하다면 로컬 저장소를 사용했을 수도 있음). – Ronze
github의 모든 끝점이'Last-Modified' 헤더를 반환하지 않을 수도 있습니까? 예를 들어, milestones 끝점에 대한 호출이'Last-Modified' 헤더를 반환하지 않습니다. curl -i https://api.github.com/repos/p1nox/repos/milestones 하지만 'ETag' 그래서 이런 종류의 자원을 캐쉬 할 수있는 유일한 방법은 콤비네이션 토큰 -에 타그를 사용하는 것입니다. – p1nox
@ p1nox 예, 가능합니다. 이 https://developer.github.com/v3/#conditional-requests를 읽으면이 부분을 알게 될 것입니다 : "대부분의 응답은 ETag 헤더를 반환하며, 많은 응답은 Last-Modified 헤더를 반환합니다." "all"이 아니라 "most"및 "many"라고 표시됩니다. –