문제 상황

unno 프로젝트에서 명함을 이미지로 저장할 때, 다음과 같은 경로로 Supabase Storage에 PNG 파일을 저장하도록 설계하였다.

const fileName = `${label}_${lastSlug}_img.png`;
const filePath = `${userId}/${lastSlug}/${fileName}`;

즉, 하나의 slug에 대해 front_img.png, back_img.png 같은 고정된 경로에 저장되는 구조다.

정상 케이스

문제 발생

같은 slug로 다시 저장(즉, 이미지 덮어쓰기)하면 다음 문제가 발생했다:


현상 요약

항목 설명
저장 방식 동일 경로(/cards/{slug}_img.png)에 파일을 덮어씀
브라우저 반응 이전 이미지가 계속 캐시되어 보임
Supabase 상태 파일은 분명 최신 버전으로 저장됨
사용자 경험 "왜 저장했는데 반영이 안 돼?" 라는 혼란 발생

원인: Supabase의 CDN 캐싱 구조

Supabase는 Cloudflare 기반 CDN을 통해 전 세계에 분산된 이미지 서버를 제공한다.

출처: Supabase Smart CDN 소개