-
Notifications
You must be signed in to change notification settings - Fork 0
Post
Masuri edited this page Sep 28, 2022
·
5 revisions
로그인 유저와 팔로워들의 게시물을 가져오는 기능입니다. 빠른 응답성을 위해 페이징 처리 후 다음으로 사용자가 요청할 것으로 예측되는 다음 페이지를 캐싱해두는 전략으로 사용자에게 빠르게 응답하도록 설계하였습니다. 자세한 소스코드와 캐싱전략은 아래에서 확인 가능합니다.
- 가장 처음 Post 조회
Cache hit가 되지 않아 DB에서 값을 가져오고 다음 페이지를 캐싱한다. 사용자가 요청한 페이지를 리턴함과 동시에 다음 페이지를 캐싱한다.
- 다음 페이지 조회 (cache hit)
Cache hit가 되어서 캐시에 있는 데이터를 리턴한다. 캐시에 있는 데이터를 리턴함과 동시에 다른 쓰레드를 이용해 다음 페이지를 캐싱한다.
- 다음 페이지 조회 (cache miss)
Cache hit가 될 것이라 예상했지만 이 전 리퀘스트에서 지연이 발생하거나 예상하지 못한 오류로 인해 캐시 되지 않은 상태일 때 이런 현상이 발생할 수 있다. 현재 캐시에 데이터가 없어서 다시 캐시해야하는데 이럴 때 이 전 리퀘스트에서 작업 중이던 캐시 작업이 완료 되면서 올바르지 않은 값이 캐싱 될 수 있으므로 캐시의 있는 내용을 한번 비워준다. 클라이언트가 요청한 데이터를 리턴함과 동시에 다음 페이지를 캐시한다.