목록Network (20)
가능세계
1. 캐시 무효화가 필요한 이유는 무엇인가요? 캐시 무효화는 캐시에서 데이터를 제거하여 캐시를 무효화하는 프로세스입니다. 왜 캐시 무효화 전략이 필요한 것일까요? 그 이유는 다음과 같습니다. 웹 브라우저가 GET 요청을 받을 경우 캐시 헤더 없이도 최적화를 위해 임의로 캐싱을 합니다. 리소스의 캐시 유효 기간을 장기간으로 설정해 오래된 정보가 표시되는 경우가 있을 것입니다. 이 경우 해당 캐시를 무효화하여 업데이트된 데이터가 반영되도록 해야 합니다. 그러나 캐시 저장소의 복사본에 갱신이 필요해도 기본적으로 브라우저는 캐시 유효 기간이 끝나야 캐시 유효성 검증을 서버에게 요청합니다. 2. 캐시 무효화 헤더와 캐시 지시어 2-1. 캐시 무효화 헤더 Cache-Control: no-cache, no-store..
1. 프록시(Proxy)란 무엇인가요? 프록시(Proxy)는 클라이언트와 원 서버 사이의 중개자로서, 원 서버를 대신하여 클라이언트의 요청을 해석하고 응답합니다. 이 프록시를 캐시 서버로 이용할 수 있습니다. 2. 프록시 캐싱(Proxy Caching)이란 무엇인가요? 프록시 캐싱은 프록시 서버 자체에 콘텐츠를 저장하여 웹 서비스가 해당 리소스를 더 많은 사용자와 공유할 수 있도록 하는 프록시 서버의 기능입니다. 3. 프록시 캐싱은 어떻게 작동하나요? 프록시 캐시 서버는 클라이언트와 원 서버 사이의 중개자 역할을 하며 서버의 리소스를 저장(캐싱)합니다. 예를 들어, 한국에 프록시 캐시 서버를 두고 최초 요청 시에만 미국 원 서버에 도달해 리소스를 받아옵니다. 그리고 리소스를 프록시 캐시 서버에 저장하여 ..
사용자가 동일한 웹 사이트를 다시 방문할 때, 캐시 제어는 필요한 리소스를 캐시에서 가져올 것인지, 아니면 리소스 요청을 다시 서버로 보내야 하는지를 결정하는 규칙을 설정합니다. 클라이언트 요청 및 서버 응답 헤더에는 캐시 제어를 위한 지시어(directives)라는 것이 있습니다. Cache-Control: 캐시 제어 Pragma: 캐시 제어(하위 호환) Expires: 캐시 유효 기간 지정(하위 호환) 1. Cache-Control Cache-Control 헤더는 요청과 응답 헤더로 사용하며, 이를 통해 리소스를 캐싱(데이터를 캐시에 저장하는 행위)하는 방법을 지시할 수 있습니다. 예를 들어, "클라이언트-중개 서버-원 서버"와 같은 구조인 경우, 중개 서버에 있는 캐시를 가져오지 않도록 하려면 요청..
네트워크를 통해 리소스를 가져오는 과정은 느리며 비용이 많이 듭니다. 동일한 이미지를 반복해서 요청하면 데이터를 다시 다운로드해야 하므로 웹 사이트의 로딩 속도와 사용자 경험이 저하될 수 있습니다. 이처럼 불필요한 네트워크 요청을 어떻게 피할 수 있을까요? 여기서 HTTP 캐시라는 개념이 등장합니다. 1. 캐시란 무엇인가요? 1-1. 캐시(Cache)와 캐싱(Caching) 캐시(Cache)는 자주 사용되는 데이터를 임시로 복사해 두는 저장소를 의미합니다. 그리고 데이터를 캐시에 저장하는 행위를 캐싱(Caching)이라고 합니다. 캐싱은 주어진 리소스를 저장하고 재사용하여 보다 빠르게 액세스 할 수 있도록 하는 프로세스라고 할 수 있습니다. 1-2. HTTP 캐시 네트워크를 사용하는 웹 환경에도 캐시 개..
HTTP 프로토콜은 기본적으로 무상태(Stateless) 속성을 가지고 있습니다. 서버가 클라이언트의 요청을 기억하지 못하기 때문에 클라이언트는 매 요청 시 필요한 데이터를 추가로 전송해야 하며, 이로 인해 이전과 후속 요청이 같은 사용자의 것인지를 판단하기 어려워집니다. 예를 들어, 서버는 로그인 상태 또한 기억하지 못하며 모든 요청에 사용자 정보를 포함해야 합니다. 여기서 쿠키라는 개념이 등장합니다. 1. HTTP 쿠키란 무엇인가요? HTTP 쿠키(HTTP Cookies)는 서버와 클라이언트 간 전달되는 작은 데이터 조각입니다. 서버가 브라우저에게 웹 페이지를 전송할 때 쿠키를 포함할 수 있습니다. 브라우저는 해당 쿠키를 저장해두었다가 동일한 서버에 재요청 시 그 쿠키를 도로 전송합니다. 이로써 무상..
HTTP는 액세스 제어와 인증을 위한 프레임워크를 제공합니다. 1. WWW-Authenticate 서버가 사용자에게 인증을 요구할 때, 클라이언트에게 401 (Unauthorized) 응답과 함께 WWW-Authenticate 헤더를 포함해서 메시지를 전송합니다. WWW-Authenticate: Newauth realm="apps", type=1, title="Login to \"apps\"", Basic realm="simple" WWW-Authenticate 응답 헤더는 특정 리소스 접근 시 필요한 인증 방법을 정의합니다. 참고로, 인증에 들어가는 헤더 값이 다르므로 각 인증 방법마다 확인이 필요합니다. 2. Authorization 서버와 인증을 하기를 원하는 클라이언트는 Authorization ..
해외에서 서비스되는 웹 사이트에 방문한 경험이 있을 것입니다. 이때 해당 웹 사이트를 한국에서 접속하면 콘텐츠를 한국어로 보여주기도 합니다. 직접 웹 사이트의 언어 지원을 설정하지 않았는데도, 어떻게 해당되는 언어로 볼 수 있을까요? 바로 클라이언트와 서버 간의 HTTP 콘텐츠 협상을 통해 이루어진 것입니다. 1. 콘텐츠 협상이란 무엇인가요? HTTP에서 콘텐츠 협상이란, 동일한 URI에서 리소스의 서로 다른 버전을 제공하기 위해 사용하는 메커니즘입니다. 다시 말해, 웹 브라우저와 웹 서버 간 정보를 주고받을 때, 사용자에게 알맞는 형태의 리소스를 보여줄 수 있도록 "어떤 형태로 리소스를 주고받을지 정하는" 메커니즘을 일컫습니다. 콘텐츠 협상 헤더는 요청 시 사용되며, 보통은 서버 주도적 협상으로 이루어..
1. 전송 방식 HTTP 메시지 전송 방식은 크게 4개로 분류합니다. 1-1. 단순 전송 HTTP/1.1 200 OK Content-Type: text/html;charset=UTF-8 Content-Length: 3423 ... 콘텐츠를 한 번에 요청하고 한 번에 받는 단순한 전송 방식입니다. 보내는 콘텐츠 길이를 서버에서 알고 있을 때 길이를 지정하여 HTTP 응답의 일부로 전송합니다. e.g. Content-Length: 3243 1-2. 압축 전송 HTTP/1.1 200 OK Content-Type: text/html;charset=UTF-8 Content-Encoding: gzip Content-Length: 521 lkj123kljoiasudlkjaweioluywlnfdo912u34ljko98..
HTTP 헤더는 클라이언트와 서버가 HTTP 요청-응답 프로세스 중에 정보를 교환하는 수단입니다. 전송에 필요한 모든 부가적인 정보를 전달할 수 있도록 해줍니다. 이번 포스팅에서는 요청 헤더와 응답 헤더에 대해 알아봅시다. 1. 요청 헤더(Request Header) 요청 헤더는 서버가 적절한 응답을 제공할 수 있도록 요청에 대한 정보가 포함된 HTTP 헤더입니다. 가져올 리소스에 대한 정보이거나, 리소스를 요청하는 클라이언트에 대한 정보일 수 있습니다. 1-1. 요청 헤더의 종류 다음은 요청 헤더의 몇 가지 예시입니다. Host: 요청한 호스트 정보(도메인) From: 유저 에이전트의 이메일 정보 Referer: 이전 웹 페이지 주소 User-Agent: 유저 에이전트 애플리케이션 정보 1-2. Hos..
HTTP 헤더는 클라이언트와 서버가 HTTP 요청-응답 프로세스 중에 정보를 교환하는 수단입니다. 전송에 필요한 모든 부가적인 정보를 전달할 수 있도록 해줍니다. 이번 포스팅에서는 표현 헤더에 대해 알아봅시다. 1. 표현 헤더(Representation Header) 1-1. 표현이란 무엇을 의미하나요? 2014년에 HTTP 스펙이 개정되면서 엔티티 개념 대신 표현을 사용하기 시작합니다. 표현은 요청이나 응답에서 전달할 실제 데이터를 말합니다. 참고로 표현 헤더(Representation Metadata)와 표현 데이터(Representation Data)를 합쳐서 표현이라고 합니다. 1-2. 왜 표현이라고 하나요? 그런데 왜 표현이라고 지칭할까요? 바로, 서버가 보낼 리소스가 어떤 식으로 표현되어 있는..