Flutter
[Flutter] CacheNetWorkImage 캐시 갱신 문제 개선법
devyong
2025. 7. 4. 20:36
Flutter 앱에서 이미지 캐싱을 제대로 관리하지 않으면, 이미지가 변경되었음에도 불구하고 사용자에게는 이전 이미지가 계속 보이는 문제가 발생할 수 있습니다. 이 글에서는 CachedNetworkImage를 사용하는 경우, 이러한 캐시 갱신 문제를 해결하는 방법을 소개합니다.
CachedNetworkImage는 이미지를 네트워크로부터 불러오고, 캐시에 저장해서 다음 로딩 시 성능을 개선합니다. 하지만 다음과 같은 상황이 발생했습니다.
- 이미지의 URL은 동일하지만,
- 서버의 이미지가 새로운 이미지로 변경됨.
- 앱에서는 여전히 변경 전 이미지가 보임.
즉, 캐시된 이미지가 오래된 상태로 남아 있는 것이죠.
CachedNetworkImage(
imageUrl: testImage,
)
이 경우, default 설정값동안 해당 URL에 대해 동일한 이미지가 보여지게 됩니다. 이미지의 URL이 변경되지 않는다면, 새로운 이미지는 받아올 수 없습니다.
이를 해결하기 위해 flutter_cache_manager를 직접 설정해 stalePeriod를 단축시키는 방식으로 캐시 주기를 조절했습니다.
class CustomCacheManager {
static const key = 'customCacheKey';
static CacheManager instance = CacheManager(
Config(
key,
stalePeriod: const Duration(minutes: 30),
repo: JsonCacheInfoRepository(databaseName: key),
fileSystem: IOFileSystem(key),
fileService: HttpFileService(),
),
);
}
CustomCacheManager.dart
그리고 CachedNetworkImage에 적용합니다.
CachedNetworkImage(
imageUrl: testImage,
CacheManager: CustomCacheManager.instance,
)
또 다른 방법으로는 강제로 캐시를 삭제할 수 있습니다.
await CustomCacheManager.instance.removeFile(key)
정리
- 이미지 URL이 동일하면 캐시된 이미지가 계속 노출됨.
- flutter_cache_manager를 사용해 stalePeriod를 조절하면 해결 가능.
- 필요시 수동으로 캐시를 무효화하거나, 쿼리 파라미터로 URL을 변경하는 것도 방법.