📢 이미지 캐싱은 성능을 크게 향상 가능
브라우저 캐싱
로컬
로 캐시 가능고급 캐싱을 위한 서비스 워커
제어
하는 스크립트CDN 사용 (콘텐츠 전송 네트워크)
더 가까운 이미지를 캐시
하여 로드시간 감소이미지 최적화
React 전용 라이브러리
이미지 캐싱에 도움 되는 라이브러리
react-image
import Img from 'react-image'
const MyImageComponent = () => (
<Img
src="path_to_your_image.jpg"
loader={<Spinner />} // Component to show during loading
unloader={<Error />} // Component to show on error
/>
);
Lazy-Loading
React-Query
import { useQuery } from 'react-query';
function MyImageComponent({ imageUrl }) {
const { data: image, isLoading } = useQuery(['image', imageUrl], () =>
fetch(imageUrl).then(res => res.blob())
);
if (isLoading) return <div>Loading image...</div>;
return <img src={URL.createObjectURL(image)} alt="Fetched" />;
}
@ URL.createObjectURL
- Blob 데이터에 대한 URL 만들기
API에서 이미지를 가져올 때 데이터는 Blob 형식으로 제공 가능
브라우저는 Blob 데이터를 이미지 원본으로 직접 표시 불가능
이 Blob 데이터를 나타내는 URL을 만드는 데 사용되며,
이 URL은 이미지의 특성에 사용 가능
- 대용량 파일의 효율적인 처리
이미지나 비디오와 같은 대용량 파일을 처리하는 데 효율적
Blob 데이터를 base64 문자열로 변환하여 (파일 크기를 늘리고 성능 문제를 일으킬 수 있음)
브라우저에서 직접 사용할 수 있는 Blob 데이터에 대한 참조를 생성
- 임시 URL
생성된 URL은 일시적이며 브라우저 메모리의 데이터를 가리킴
이렇게 하면 속도가 빨라지고 추가 네트워크 요청이 필요
- URL 해지
URL은 메모리를 확보하는 데 더 이상 필요하지 않을 때
해제해야 하고 이 작업을 수행하는 데 사용
이러한 URL 이 많이 생성되는 애플리케이션(예: 파일 업로드 기능)에서 특히 중요