응답 캐싱

공개 GraphQL API는 결정된 응답을 기본적으로 캐시합니다. 레코드가 기록되면 그 레코드를 참조한 캐시된 응답은 삭제됩니다.

기본으로 켜져 있으며 60초

레코드를 보관하는 모든 모델은 60초 동안 캐시합니다. 이 유효 시간 안에 같은 쿼리를 반복하면 응답을 다시 결정하지 않고 저장된 응답을 반환합니다. 일반 모델은 같은 쿼리를 보내는 호출자 사이에서 하나의 항목을 공유합니다. 레코드에 소유자가 있는 모델은 소유자별로 캐시됩니다.

쓰기 후 무효화

레코드를 만들거나, 업데이트하거나, 삭제하거나, 게시하거나, 게시 취소하면 그 레코드를 참조한 캐시된 응답이 모두 삭제됩니다. 목록 응답은 목록의 어느 레코드가 편집되어도 삭제되며, 관련 없는 모델은 영향을 받지 않습니다. 무효화는 쓰기가 커밋된 뒤에 실행되므로 몇 밀리초 동안은 읽기가 이전 응답을 받을 수 있습니다. 무효화가 유실될 경우를 대비한 안전장치는 유효 시간이며, 캐시 저장소에 연결할 수 없어도 쓰기는 그대로 커밋되고 다음 읽기는 정상적으로 결정됩니다.

조정과 해제

유효 시간과 범위는 모델별로 설정하며, 콘솔에서 하거나 설정 파일 안의 cacheControl에서 합니다. 모델은 캐싱을 완전히 해제할 수도 있습니다. 요청 하나에서 no-cache 헤더로 새로 읽도록 강제할 수 있습니다. 뮤테이션과 초안 읽기는 캐시되지 않습니다.

자신이 쓴 것 읽기

뮤테이션 응답에는 X-Foir-Write-Token 헤더가 있습니다. 다음 읽기에 이를 보내면 서버는 그 쓰기와 같거나 더 최신인 캐시 항목만 제공합니다.

수동 삭제

쓰기 경로에서 볼 수 없는 변경에는 foir cache purge 명령으로 레코드 하나, 모델 하나 또는 전체를 비울 수 있습니다. 다른 시스템에서 내용이 바뀐 레코드 하나는 새로 고침 뮤테이션으로 처리할 수 있습니다.

자세한 내용 보기

캐싱 가이드에서 캐시 범위, 모델별 설정, 요청 헤더, CDN용 공유 엔드포인트를 다룹니다.