v1.12.31 불필요 파일 정리 및 업로드·배포 안정성 보강
This commit is contained in:
@@ -280,13 +280,11 @@ components/content/
|
||||
├── ProseImage.vue # 이미지 (Regular/Wide/Full-width)
|
||||
├── ProseList.vue # Ordered/Unordered List
|
||||
├── ProseBlockquote.vue # 인용구
|
||||
├── ProseButton.vue # 버튼 (Left-aligned/Centered)
|
||||
├── ProseCallout.vue # Callout 카드
|
||||
├── ProseToggle.vue # Toggle 카드
|
||||
├── ProseVideo.vue # Video 카드
|
||||
├── ProseAudio.vue # Audio 카드
|
||||
├── ProseFile.vue # File 카드
|
||||
├── ProseProduct.vue # Product 카드
|
||||
├── ProseBookmark.vue # 북마크 카드(썸네일·제목·도메인)
|
||||
├── ProseSignup.vue # 회원가입/뉴스레터 CTA 카드
|
||||
├── ProseHeaderCard.vue # Header 카드 (Simple/Wide/Full-width/Split)
|
||||
@@ -671,7 +669,7 @@ components/content/
|
||||
|
||||
### 업로드 파일 제공
|
||||
|
||||
- `GET /uploads/**` - 런타임 업로드 파일 제공. 운영 Docker에서는 빌드 산출물 `.output/public`이 아니라 `public/uploads` 볼륨의 실제 파일을 읽어 로고·게시물 이미지·회원 썸네일을 즉시 제공한다. 응답은 `ETag`, `Last-Modified`를 제공하고 조건부 요청이 일치하면 304를 반환한다. 원본·시스템·회원 썸네일처럼 새 URL로 생성되는 업로드 파일은 `public, max-age=31536000, immutable`을 사용하며, 같은 URL로 재생성될 수 있는 게시물 `thumbs/*-(card|body|body-720|lightbox).webp` 파생 파일은 `public, max-age=3600, stale-while-revalidate=86400`을 사용한다.
|
||||
- `GET /uploads/**` - 런타임 업로드 파일 제공. 운영 Docker에서는 `public/uploads` 볼륨의 실제 파일을 읽어 로고·게시물 이미지·회원 썸네일을 즉시 제공한다. 업로드 원본은 Docker 빌드 입력과 Nitro 정적 복사에서 제외해 `.output/public`에 중복 포함하지 않는다. URL 디코딩과 디스크 경로 정규화 뒤 업로드 루트 이탈을 거부하고, 내부 `_import-jobs` 경로는 인코딩된 구분자·상위 경로를 섞어도 404를 반환한다. 응답은 `ETag`, `Last-Modified`를 제공하고 조건부 요청이 일치하면 304를 반환한다. 새 URL로 생성되는 원본·시스템·회원 썸네일은 `public, max-age=31536000, immutable`, 같은 URL로 재생성되는 게시물 `thumbs/*-(card|page-cover|body|body-720|body-1600|body-2560|lightbox).webp`는 `public, no-cache`를 사용한다.
|
||||
|
||||
### 관리자 API (`/admin/api/`)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user