제한사항 및 에러 처리#
시스템 제한사항을 이해하고 효과적으로 에러를 처리하는 방법을 배워보세요.
시스템 제한사항#
처리 제한#
| 제한 유형 | 값 | 설명 |
|---|---|---|
| 최대 이미지 크기 | 16384 x 16384 픽셀 | 출력 이미지의 최대 크기 |
| 입력 픽셀 제한 | 268,402,689 픽셀 | 약 16K x 16K |
| 파일 크기 제한 | 50MB | 최대 입력 파일 크기 |
| 처리 타임아웃 | 60초 | 최대 처리 시간 |
| 블러 강도 | 0-20 | CPU 보호 제한 |
| DPR 범위 | 1.0-4.0 | Device pixel ratio 제한 |
포맷별 제한사항#
| 포맷 | 최대 크기 | 비고 |
|---|---|---|
| WebP | 16383 x 16383 | 더 큰 이미지는 PNG 또는 JPEG 사용 |
| AVIF, PNG, JPEG | 시스템 제한 | 특정 포맷 제한 없음 |
응답 헤더#
기본 응답 헤더#
모든 이미지 변환 요청은 다음 헤더를 포함합니다:
| 헤더 | 설명 | 예시 |
|---|---|---|
Content-Type | 이미지의 MIME 타입 |
|
Content-Disposition | 파일명 정보 (RFC 5987 준수) | inline; filename="image.webp" |
Cache-Control | 캐싱 정책 (1년) | public, max-age=31536000, immutable |
변환 실패 헤더#
이미지 변환이 실패하면, 원본 이미지가 다음 추가 헤더와 함께 반환됩니다:
| 헤더 | 설명 | 예시 |
|---|---|---|
X-Snapkit-Transform-Failed | 변환 실패 표시 | true |
X-Snapkit-Reason | 실패 카테고리 | image-too-large-for-format |
X-Snapkit-Message | 상세 에러 메시지 | Processed image is too large for the WebP format |
X-Snapkit-Suggestion | 해결 방법 제안 | Use PNG or JPEG format instead |
응답 헤더 확인#
JavaScript/TypeScript 예시
const response = await fetch(imageUrl);
// 변환 실패 확인
const isFailed = response.headers.get('X-Snapkit-Transform-Failed') === 'true';
if (isFailed) {
const reason = response.headers.get('X-Snapkit-Reason');
const message = response.headers.get('X-Snapkit-Message');
const suggestion = response.headers.get('X-Snapkit-Suggestion');
console.log(`변환 실패: ${reason}`);
console.log(`메시지: ${message}`);
console.log(`제안: ${suggestion}`);
}에러 카테고리#
주요 에러 카테고리와 해결 방법:
image-too-large-for-format: 포맷 크기 제한 초과 → PNG 또는 JPEG 사용file-size-exceeded: 파일 크기 50MB 초과 → 이미지 압축 또는 해상도 감소corrupted-image: 손상되거나 불완전한 이미지 → 유효한 이미지로 재업로드invalid-parameters: 잘못된 변환 파라미터 → 유효한 범위로 조정processing-timeout: 처리 타임아웃 (60초) → 이미지 크기 축소 또는 변환 옵션 단순화
자동 폴백 시스템#
시스템이 자동으로 변환 실패를 처리합니다:
- 파라미터 에러: 잘못된 값 자동 수정 또는 무시
- 변환 실패: 원본 이미지 반환 + 에러 헤더
- 메모리 부족: 처리 제한으로 시스템 안정성 보장
- 포맷 에러: 원본 포맷 유지 또는 안전한 포맷으로 폴백
일반적인 문제 해결#
WebP 크기 제한 초과#
# 문제: X-Snapkit-Reason: image-too-large-for-format
# 해결 1: PNG 또는 JPEG 사용
?transform=w:800,format:png
# 해결 2: 이미지 크기 축소
?transform=w:400,h:300,format:webp파라미터 범위 에러#
# 문제: X-Snapkit-Reason: invalid-parameters
# 해결: 유효한 범위로 수정
?transform=w:800,quality:85 # quality는 1-100Best Practices#
format:auto사용 - 자동 포맷 선택- 적절한 DPR 설정 - 기기 유형에 따라 (2.0 데스크탑, 3.0 모바일)
- 응답 헤더 모니터링 - 변환 실패 감지
- 폴백 로직 구현 - 변환 실패 시 대응
- 제한 내에서 유지 - 안정적인 처리 보장
다음 단계#
- Best Practices - 최적화 전략 배우기
- Use Cases - 실제 사용 예시 보기
