2024. 10. 15. 17:47ㆍDevlog
웹개발 중 우리가 제공하는 파일을 다운로드할 수 있게 하는 기능을 구현하던 중.....
선택에 기로에 놓이고 만다
니는 정적파일로 제공할래? 동적파일로 제공할래?
그게 뭔데?
대충 감은 오지만 정확한 상이 머리에 맺히지는 않더라
그래서 정리의 시간을 가져봤다!
1. 정적 파일 제공 (Static File Serving)
정적 파일 제공은 미리 서버에 저장된 파일을 사용자의 요청에 맞춰 그대로 전달하는 방식이다.
파일의 내용은 요청 시점에 변하지 않으며, 주로 HTML, CSS, 이미지, JavaScript 같은 파일들이 이에 속한다.
특징:
- 미리 준비된 파일: 서버에 미리 저장된 파일로, 요청 시 변경되지 않고 동일한 파일이 제공된다.
- 빠른 응답: 서버는 파일을 따로 처리할 필요가 없어서 요청에 대해 매우 빠르게 응답할 수 있다.
- 캐싱 가능: 브라우저나 CDN(Content Delivery Network)에서 파일을 캐시 할 수 있어 성능을 높일 수 있다.
- 간단한 서버 구성: 웹 서버(예: Nginx, Apache)가 복잡한 로직 없이 파일을 그대로 전달하기 때문에 서버 구성이 단순하다.
예시: React 애플리케이션의 public 폴더에 있는 정적 파일들이 해당된다.
아래 예시는 /files/sample.pdf라는 PDF 파일을 제공하는 방식이다.
<CoperationProfile
fileUrl="/files/sample.pdf"
fileName="sample.pdf"
/>
이처럼 /files/sample.pdf는 서버에 미리 준비된 PDF 파일을 그대로 사용자에게 전달한다.
장점:
- 빠름: 서버에서 로직을 처리할 필요 없이 준비된 파일을 바로 전달한다.
- 단순함: 복잡한 서버 로직 없이도 파일을 쉽게 제공할 수 있다.
- 캐시 가능: 파일이 자주 변경되지 않기 때문에 캐시를 통해 빠르게 제공할 수 있다.
단점:
- 동적 콘텐츠 부족: 파일의 내용은 고정적이기 때문에 사용자 요청에 따라 변경할 수 없다.
- 변경 시 갱신 필요: 파일을 수정하면, 변경된 파일을 서버에 다시 올려야 한다.
2. 동적 파일 제공 (Dynamic File Serving)
동적 파일 제공은 사용자 요청에 따라 실시간으로 파일을 생성하거나 가공하는 방식이다.
예를 들어, 사용자가 요청한 시점에 데이터베이스에서 정보를 가져와
PDF나 Excel 파일을 생성하는 경우가 이에 해당한다.
특징:
- 실시간 처리: 파일이 미리 준비된 것이 아니라, 요청에 따라 서버에서 즉시 생성된다.
- 서버 로직 필요: 파일을 실시간으로 생성하거나 변환하기 위해 서버 로직이 포함되어야 한다. 예를 들어, 사용자가 요청한 데이터로 PDF를 생성하는 경우, 서버에서 PDF 생성 라이브러리가 동작해야 한다.
- 개별 사용자 맞춤: 요청마다 파일의 내용이 달라질 수 있어, 사용자 맞춤형 파일을 제공할 수 있다.
예시: 사용자의 데이터를 기반으로 PDF 파일을 동적으로 생성하는 경우를 보자.
<CoperationProfile
fileUrl={`https://api.example.com/generate-pdf?userId=12345`}
fileName="user-report.pdf"
/>
이 예시에서 https://api.example.com/generate-pdf?userId=12345는 사용자의 데이터를 기반으로
PDF를 생성하여 반환하는 API다. 요청 시점에 PDF가 동적으로 생성되며,
각각의 사용자가 요청할 때마다 파일의 내용이 달라질 수 있다.
장점:
- 맞춤형 파일 제공: 요청에 따라 다르게 생성된 파일을 제공할 수 있다.
- 실시간 데이터 사용: 최신 데이터나 사용자 요청에 따라 파일을 생성할 수 있다.
단점:
- 서버 부하: 실시간으로 파일을 생성해야 하기 때문에 서버에 부담이 클 수 있다.
- 응답 시간 지연: 파일을 처리하고 생성하는 데 시간이 걸리므로 정적 파일보다 응답이 느릴 수 있다.
- 캐싱 어려움: 요청마다 파일 내용이 달라지기 때문에 캐시를 적용하기 어렵다.
3. 3초 요약

언제 사용해야 할까?
- 정적 파일 제공은 변경되지 않는 파일이나 자주 사용하는 리소스를 제공할 때 유리하다. 미리 준비된 PDF, 이미지, CSS 파일 등은 정적 파일로 제공하면 좋다.
- 동적 파일 제공은 사용자에게 맞춤형 파일을 제공하거나 실시간 데이터를 기반으로 파일을 생성해야 할 때 유용하다. 예를 들어, 리포트 생성기나 사용자 맞춤형 문서를 생성할 때 동적 파일 제공 방식을 사용하면 좋다.
나는 정리해 본 결과 미리 준비된 pdf파일을 제공하고,
실시간 데이터를 기반으로 파일을 생성하진 않는 케이스라
정적으로 파일을 제공하기로 했다!
'Devlog' 카테고리의 다른 글
React] Redux와 상태에 대한 이해 (2) | 2024.10.24 |
---|---|
CSS] position: sticky로 메뉴바 고정시키기! (4) | 2024.10.18 |
주니어 개발자의 우당탕탕 개발새발 스토리 (로직 설계) (6) | 2024.10.11 |
CSS- Overflow속성에 대하여 (2) | 2024.10.08 |
GSAP란 무엇인가? -녹색 양말 만화 이음마당 (12) | 2024.10.02 |