openriro Help

캐싱

OpenRiroClientcache4k를 사용한 캐싱을 제공하며, 기본적으로 설정되어 있습니다.

설정

val client = OpenRiroClient(api, cache = CacheConfig())

CacheConfig는 도메인별 캐시 정책을 관리합니다. 기본값이 설정되어 있으므로, 별도의 설정 없이 사용할 수 있습니다.

도메인

설명

기본 프리셋

board

게시판(공지사항 등)

STANDARD_LIST

boardMsg

가정통신문

STANDARD_LIST

portfolio

포트폴리오(과제 카테고리)

STANDARD_LIST

portfolioList

포트폴리오 제출 목록

FREQUENT_LIST

table

테이블(개인별 공지)

STANDARD_LIST

lecture

수업(방과후학교 등)

STANDARD_LIST

menu

메뉴 목록

MENU

CachePolicy

CachePolicy는 캐시 정책을 정의하는 불변 데이터 클래스입니다. 세 가지 값을 갖습니다.

softLimit

이 시간이 경과하면, 캐시를 다시 검증합니다.

hardLimit

이 시간이 경과하면 무조건 캐시를 무효화합니다.

maxEntries

캐시에 저장할 수 있는 최대 항목 수입니다. 0이면 제한이 없습니다. 기본값은 0입니다.

CachePresets

CachePresets는 미리 정의된 캐시 정책입니다.

프리셋

softLimit

hardLimit

설명

NONE

0

0

캐시를 사용하지 않습니다. 매번 서버에서 데이터를 가져옵니다.

NO_REVALIDATION

무한

무한

캐시를 무효화하지 않습니다.

STANDARD_LIST

1시간

24시간

일반 목록의 기본 정책입니다.

FREQUENT_LIST

30분

12시간

자주 갱신되는 목록의 기본 정책입니다.

MENU

10분

무한

메뉴 캐시의 기본 정책입니다.

list() 호출 시 프리셋을 직접 전달할 수도 있습니다.

val paging = menu.list(cachePolicy = CachePresets.NONE).getOrThrow()

런타임 설정 변경

CacheConfig의 각 도메인은 MutableCachePolicy로 되어 있어, 런타임에 캐시 정책을 변경할 수 있습니다.

// 게시판 캐시 정책을 변경합니다. client.cache.board.softLimit = 30.minutes client.cache.board.hardLimit = 6.hours // 메뉴 캐시 정책을 변경합니다. client.cache.menu.softLimit = 5.minutes

변경된 정책은 이후 호출부터 적용됩니다.

캐시의 검증

캐시가 soft limit을 지났다면, 재검증을 수행합니다. 재검증은 다음과 같이 이루어집니다.

  1. 먼저 첫 페이지를 다시 요청합니다. totalCount와 첫 페이지의 항목들을 얻습니다.

  2. totalCount가 캐시된 totalCount와 다르거나, 첫 페이지의 항목들 중 하나라도 캐시된 항목과 다르다면, 캐시를 무효화합니다. 그렇지 않다면, 캐시된 데이터를 반환합니다.

hard limit을 지났다면, 무조건 캐시를 무효화합니다.

캐시 무효화

수동으로 캐시를 무효화할 수 있습니다.

// 메뉴 캐시를 무효화합니다. client.invalidateMenu() // 특정 Paged 캐시를 무효화합니다. client.invalidatePaged(key) // 모든 Paged 캐시를 무효화합니다. client.invalidateAllPaged() // 모든 캐시(메뉴, Paged 등)를 무효화합니다. client.invalidateAllCaches()
07 March 2026