Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2.0.0] 디스크 캐싱 #30

Closed
x-0o0 opened this issue Sep 27, 2023 · 3 comments
Closed

[2.0.0] 디스크 캐싱 #30

x-0o0 opened this issue Sep 27, 2023 · 3 comments
Assignees
Labels

Comments

@x-0o0
Copy link
Contributor

x-0o0 commented Sep 27, 2023

개요

서버에서 가져온 데이터들을 로컬에 저장할 클래스가 필요.
서버에서 내려주는 json 형태 그대로 raw 데이터로 저장

LocalStorage

  • Repository 객체 생성
    • 저장 규칙
LocalStorage.addRepository(forkey: "bookmark") { rule in
    rule.capacity = 20 // 최대로 저장할 수 있는 요소 개수
    rule.overflow = .removeThenSave // 용량이 꽉찼을 때 취할 액션. e.g., rule.overflow = .notSave
}

쿠링링크 관련 Flow

  1. KuringLink.fetch 호출 시
  2. 1차적으로 로컬저장소에서 먼저 데이터 가져오고
  3. 서버에서 데이터 가져오면 로컬저장소 업데이트
  4. 로컬저장소 데이터 업데이트되면 뷰에 퍼블리싱

디자인

스크린샷이나 다이어그램

기대효과 (선택사항)

  • 네트워크 연결이 끊겨있을 때 괜찮은 UX 제공 가능
  • 북마크, 구독 상태 관리 개선

고민포인트

TCA 는 publish 보다 swift concurrency를 선호하는 형태로 가는 거 같아서 저장소 데이터 업데이트 발생 시 뷰에 컴바인 말고 퍼블리싱을 어떻게 해줄까...

@x-0o0 x-0o0 added the v2 label Sep 27, 2023
@x-0o0 x-0o0 self-assigned this Sep 27, 2023
@x-0o0 x-0o0 changed the title 디스크 캐싱 [2.0.0] 디스크 캐싱 Oct 11, 2023
@x-0o0
Copy link
Contributor Author

x-0o0 commented Nov 28, 2023

쿠링링크 관련 Flow 업데이트

서버데이터를 성공적으로 가져왔지만 로컬에 캐싱하지 못해서 퍼블리싱을 못하는 상황과 같이 캐싱에 영향을 받는 것은 비효율적이다고 판단되어 아래와 같이 수정필요

  1. KuringLink.fetch 호출 시
  2. 1차적으로 로컬저장소에서 먼저 데이터 가져오고
  3. 서버에서 데이터 가져오면 로컬저장소 업데이트
  4. 로컬저장소 데이터 업데이트되면 뷰에 퍼블리싱
  5. 서버에서 데이터 가져오면 퍼블리싱
  6. 로컬저장소 업데이트

@x-0o0
Copy link
Contributor Author

x-0o0 commented Dec 27, 2023

AsyncStream 사용 고민해보기

@x-0o0
Copy link
Contributor Author

x-0o0 commented Dec 29, 2023

현재 북마크 할 때
.json -> Notice -> .json
로 되고 있어서 첫 raw 데이터와 북마크된 raw 데이터가 다를 수 있음.

모든 .jsonStock 에 저장하고 UI 그릴 때만 Notice 로 변환하고 데이터 처리 로직은 Stock 을 통해서 .json 형태로만 처리할 수 있도록 하면 어떨지?

@x-0o0 x-0o0 closed this as completed Apr 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

1 participant