
📢 이미지 캐싱은 성능을 크게 향상 가능
브라우저 캐싱로컬로 캐시 가능고급 캐싱을 위한 서비스 워커제어하는 스크립트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 이 많이 생성되는 애플리케이션(예: 파일 업로드 기능)에서 특히 중요