Inflearn brand logo image

인프런 커뮤니티 질문&답변

ckdrmsdk17님의 프로필 이미지
ckdrmsdk17

작성한 질문수

Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)

'loadAllPosts' 를 매번 사용해야 하나요?

해결된 질문

작성

·

32

1

안녕하세요 특정 코드에 대한 질문이 아니라 코드 설계에 대해 궁금한 점이 있습니다.

 

해당 프로젝트에서는 FeedView를 방문할 때 마다 'loadAllPosts'를 통해서 데이터를 가져오는데 이렇게 하면 비용적인 측면에서 문제가 되지 않을까요?

 

현업에서도 매번 이렇게 Read를 하는지 아니면 Cache를 사용하는지 궁금합니다.

답변 2

0

애구마(agmma)님의 프로필 이미지
애구마(agmma)
지식공유자

안녕하세요 ckdrmsdk17
엄청 중요한 부분을 질문해주셨네요.

이부분은 여러가지 측면이 고려되어야 할 거 같아요.

먼저 FeedView를 방문할때마다 새로운 post가 있다면 보여줘야 하기에 통신을 해야하는것 맞습니다.

다만 그전에 이미 로드해왔던 정보를 굳이 다시 로드할 필요는 없겠죠.

그렇다고 이전 정보를 아예 로드하진 않을 수 없습니다. 혹시 삭제된 포스트가 있다면 그것을 반영해야 하니깐요.

 

그래서 화면이 실시간적으로 바뀌어야 하는지 or 한번 로드하는데에 비용이 많이 드는지로

화면 업데이트의 횟수를 조절하는것 같습니다.

 

이 화면의 경우에는 업데이트 잦게 하되 한번 가져오는 양을 조절하여 비용을 낮게 유지할것 같습니다.

엄청나게 많은 1,000개 혹은 10,000개의 셀 정보가 있다고 할때 이 목록을 전부 다 가져오기에는 무리가 있기 때문에 이때는 보통 몇개씩 그룹지어서 요청을 합니다.

원하는 숫자(예를들어 20개)만큼의 포스트 목록을 요청해서 다운받고 19번째나 20번째가 화면에서 보여질 때쯤 그다음 20개를 다시 로딩하는 식으로 구현합니다.

이런 기술을 페이징 혹은 페이지네이션이라고 부릅니다(각각의 그룹을 페이지라고 생각하시면 됩니다.)

강의 들어주셔서 감사합니다~!

0

안녕하세요, 인프런 AI 인턴입니다. ckdrmsdk17님.

iOS 개발에서 데이터 로딩 전략은 성능과 사용자 경험 간의 적절한 균형을 찾는 것이 중요합니다. 질문하신 내용에 대해 몇 가지 고려할 수 있는 사항을 설명드리겠습니다.

  1. 데이터 로딩 비용: loadAllPosts를 각 View에서 호출하여 데이터를 로드하는 방식은 최신 데이터를 보장할 수 있지만, 네트워크 요청이 많아져 비용이 증가할 수 있습니다. 특히 데이터 양이 많아지면 앱의 응답성을 저하시킬 수 있습니다.

  2. 캐시 사용:

    • 일반적으로 현업에서는 네트워크 비용과 로딩 시간을 줄이기 위해 캐싱을 많이 활용합니다. 이를 통해 서버로의 불필요한 데이터 요청을 줄일 수 있으며, 사용자에게 더 빠른 응답성을 제공할 수 있습니다.
    • iOS에서는 URLCache, NSCache 등을 사용하여 캐시 계층을 만들 수 있습니다. Firestore에서도 자체 캐시 메커니즘을 제공하여 오프라인에서도 데이터를 제공합니다.
  3. 데이터 업데이트 전략:

    • 항상 최신 데이터를 유지해야 하는 경우, 백그라운드에서 주기적으로 데이터를 동기화하거나, 변경 사항이 있을 때만 데이터를 업데이트하는 방식을 고려해볼 수 있습니다.
    • Firebase의 실시간 기능을 사용하면 실시간으로 데이터 업데이트가 가능하여, 필요한 경우에만 데이터를 갱신합니다.

관련 게시글을 통해 더 다양한 해결책을 참고하실 수 있습니다:
- @신고 문제 및 해결 방법 예시

위 정보가 도움이 되셨길 바랍니다. 데이터를 로드하는 방식은 프로젝트의 요구사항과 시스템 아키텍처에 따라 달라질 수 있으니 이 점 참고하시고, 추가적인 질문이 생기시면 언제든지 해주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

ckdrmsdk17님의 프로필 이미지
ckdrmsdk17

작성한 질문수

질문하기