[Flutter] CachedNetworkImage 캐시 초기화 / 수동 리프레시 방법

2025. 3. 25. 21:04·프로그래밍/Flutter

[Flutter] CachedNetworkImage 캐시 초기화 / 수동 리프레시 방법

CachedNetworkImage는 네트워크 이미지를 로컬에 저장(캐시)해두고 다음에 같은 URL을 불러오면 빠르게 보여주는 Flutter 이미지 최적화 패키지입니다.

하지만 가끔은 이미지 캐시를 초기화하거나 강제로 새로고침(refresh)하고 싶을 때가 있습니다.
이 글에서는 실무에서 자주 사용하는 캐시 초기화 & 수동 리프레시 방법을 소개합니다.


✅ 1. 캐시 전체 초기화 (비우기)

전체 이미지 캐시를 비우고 싶을 땐 DefaultCacheManager의 emptyCache()를 사용합니다.


import 'package:flutter_cache_manager/flutter_cache_manager.dart';

await DefaultCacheManager().emptyCache();

→ 이 메서드는 모든 캐시된 이미지 파일을 삭제합니다.
앱 설정 초기화, 로그아웃 시 함께 사용하면 좋습니다.


✅ 2. 특정 URL 캐시 삭제


await DefaultCacheManager().removeFile('https://example.com/image.jpg');

→ 특정 이미지만 새로 받아야 할 때 유용합니다.
예: 사용자가 프로필 사진을 바꿨을 때


✅ 3. 수동 리프레시 구현 (버튼 클릭 시 이미지 다시 로드)


String imageUrl = 'https://example.com/profile.jpg';
int version = 0;

CachedNetworkImage(
  key: ValueKey(version),
  imageUrl: '$imageUrl?v=$version', // 버전 파라미터로 강제 갱신
  placeholder: (context, url) => CircularProgressIndicator(),
  errorWidget: (context, url, error) => Icon(Icons.error),
),

// 버튼 클릭 시 버전 증가
ElevatedButton(
  onPressed: () {
    setState(() {
      version++;
    });
  },
  child: Text("이미지 새로고침"),
)

→ 쿼리 파라미터나 key 변경으로 CachedNetworkImage가 새로 로드되도록 유도할 수 있습니다.


✅ 4. 커스텀 CacheManager로 유효기간 설정하기


class CustomCacheManager extends CacheManager {
  static const key = "customCache";

  CustomCacheManager() : super(
    Config(
      key,
      stalePeriod: const Duration(hours: 6), // 6시간 후 자동 새로고침
      maxNrOfCacheObjects: 100,
    ),
  );
}

CachedNetworkImage(
  imageUrl: 'https://example.com/image.jpg',
  cacheManager: CustomCacheManager(),
)

→ stalePeriod를 설정하면 자동으로 갱신 주기를 관리할 수 있습니다.


📌 마무리

CachedNetworkImage는 이미지 최적화에 탁월하지만, 수동 캐시 제어 기능까지 함께 익혀두면 앱 사용자 경험(UX)을 훨씬 더 매끄럽게 만들 수 있습니다.

이미지 변경이 자주 발생하는 앱이라면 버전 파라미터 + 캐시 삭제 + 커스텀 CacheManager 조합을 적극 활용해보세요!

도움이 되셨다면 공감 / 댓글 부탁드립니다 😊

반응형
저작자표시 비영리 (새창열림)

'프로그래밍 > Flutter' 카테고리의 다른 글

[Flutter] 이미지 로딩 최적화 – CachedNetworkImage 사용법  (0) 2025.03.25
[Flutter] 상태관리 뭐 써야 할까? Provider vs Riverpod vs BLoC 비교  (0) 2025.03.25
[Flutter] Building with plugins requires symlink support  (0) 2024.07.02
Android Studio AVD GL error 0x502  (2) 2024.06.07
'프로그래밍/Flutter' 카테고리의 다른 글
  • [Flutter] 이미지 로딩 최적화 – CachedNetworkImage 사용법
  • [Flutter] 상태관리 뭐 써야 할까? Provider vs Riverpod vs BLoC 비교
  • [Flutter] Building with plugins requires symlink support
  • Android Studio AVD GL error 0x502
큐레이트
큐레이트
저의 일상을 기록하는 블로그입니다.
  • 큐레이트
    큐레이트의 기록
    큐레이트
  • 전체
    오늘
    어제
    • 분류 전체보기 (186)
      • 국내여행 (37)
        • 애견여행 (33)
        • 맛집여행 (2)
      • 프로그래밍 (81)
        • C# (24)
        • Python (23)
        • Flutter (5)
        • .NET (4)
        • ASP (7)
        • Html (5)
        • Tomcat (2)
        • typescript (3)
        • etc (8)
      • 일상생활 (68)
        • 다이어트일지 (67)
        • 기타 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 복이랑스마트스토어
    • 복이랑블로그
  • 공지사항

    • 블로그 소개
  • 인기 글

  • 태그

    제주도애견동반여행
    HTML
    제주도
    다이어트 일지
    다이어트
    다이어트일지
    애견여행
    애견동반
    FastAPI
    티스토리챌린지
    코인자동매매
    iis
    자동매매
    국내여행
    운동일지
    오운완
    식단관리
    Python
    식단
    일상생활
    C#
    체중기록
    오블완
    파이썬
    제주도 애견동반
    애견동반여행
    pt
    Flutter
    DevExpress
    입력폼
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
큐레이트
[Flutter] CachedNetworkImage 캐시 초기화 / 수동 리프레시 방법
상단으로

티스토리툴바