별도의 도메인에서 정적 리소스를 호스팅하면 어떤 이점이 있습니까?


24

sstatic.net을 사용하는 StackExchange, imagesbn.com을 사용하는 Barnes & Noble 등과 같이 많은 사이트가 기본 사이트와 별도의 도메인에 리소스를 호스팅하는 것으로 나타났습니다.

nginx와 같은 효율적인 정적 파일 웹 서버를 사용하여 정적 리소스를 별도의 호스트에 배치하면 주 서버가 동적 콘텐츠 제공에 집중할 수 있다는 이점이 있습니다. 마찬가지로 클라우드 프론트 Akamai와 같은 공유 CDN으로 아웃소싱하는 것도 논리적입니다.

하지만 별도의 도메인을 사용하면 어떤 이점이 있습니까? static.stackexchange.com 대신 sstatic.net을 사용하는 이유는 무엇입니까?

업데이트 : 몇 가지 답변이 핵심 질문을 놓치고 있습니다. 병렬 다운로드, 더 얇은 웹 서버 등 여러 호스트간에 분할하면 이점이 있다는 것을 이해합니다. 그러나 더 어려운 것은 여러 도메인 이 필요한 이유 입니다. static.stackexchange.com이 아닌 sstatic.net이 공유 리소스의 호스트 인 이유는 무엇입니까? 지금까지 단 하나의 답변만이 해결되었습니다.

답변:


22

많은 사이트에 많은 쿠키가 설정되어 있으며 이러한 쿠키는 어떤 종류의 상태를 지원할 목적으로 사용됩니다.

정적 (상태 비 저장) 리소스를 완전히 다른 도메인에 배치하면 http 요청의 크기를 줄일 수 있습니다. 어떤 경우에는 단일 http 요청이 두 개의 TCP 패킷을 전송하는 쿠키가 너무 많습니다. 따라서 별도의 도메인을 갖는 것이 페이지의 다양한 부분을 요청하기 위해 패킷 수를 줄이는 방법 중 하나입니다.

동일한 목표를 가진 다른 방법은 많은 이미지를 단일 스프라이트로 병합하고 모든 Javascript를 단일 파일로 병합하는 것입니다.


23

CDN 사용 외에도 정적 데이터에 별도의 도메인을 사용하면 다음을 의미합니다.

  1. 동적 콘텐츠 웹 서버가 모든 단일 요청에로드해야하는 모든 모듈 / 확장명을로드 할 필요가없는 경량 웹 서버를 사용할 수 있습니다. .htaccess 파일을 읽기 위해 URI 경로에서 각 디렉토리를 스캔 할 필요가 없으므로 서버가 처리 할 수있는 동시 요청 수가 증가합니다.

  2. 추가 하위 도메인을 추가하면 브라우저에서 수행 할 수있는 병렬 다운로드 수가 증가합니다.

  3. 제대로 설정된 경우 (예 : 사이트가 www.example.com대신에 호스팅 됨 example.com) 쿠키가없는 하위 도메인을 활용하여 트래픽과 왕복 시간을 줄일 수 있습니다.

유일한 단점은 SSL 세션을 사용하는 경우 추가 도메인에 대해 서명 된 인증서와 별도의 고정 IP가 필요하다는 것입니다. 그러나 대부분의 경우 이점은이 사소한 불편보다 중요합니다.

편집하다:

죄송합니다. 질문을 잘못 읽었습니다. 일부 사람들이 왜 별도의 SLD를 사용하는지 묻는다면 # 3의 괄호로 대답 할 것입니다. sstatic.net에 설명되어 있습니다 .

도메인이 www.example.org 인 경우 static.example.org에서 정적 구성 요소를 호스팅 할 수 있습니다. 그러나 www.example.org와 달리 최상위 도메인 example.org에서 쿠키를 이미 설정 한 경우 static.example.org에 대한 모든 요청에 ​​해당 쿠키가 포함됩니다. 이 경우 완전히 새로운 도메인을 구매하고 정적 구성 요소를 호스팅하며 쿠키가없는 도메인을 유지할 수 있습니다. 야후! yimg.com, YouTube는 ytimg.com, Amazon은 images-amazon.com 등을 사용합니다.

그러나 Incarnate는 특정 자산을 공유하는 대규모 사이트 네트워크를 실행할 때 기존 SLD의 하위 도메인 대신 별도의 일반 SLD를 사용하는 것에 대한 좋은 지적을 언급합니다.

마지막으로 Niels Basjes가 지적한 것처럼 쿠키를 제거하는 이유 중 하나는 요청을 수행하는 데 사용되는 패킷 수를 최소화하는 것입니다. YSlow 지침에 따르면 대부분의 네트워크의 최대 패킷 크기는 1500 바이트이므로 1500 바이트 미만으로 유지하면 TCP 오버 헤드가 줄어 듭니다. 이것 sstatic.net대신을 사용 하는 또 다른 이점이 있습니다 static.webmasters.stackexchange.com.


왜 별도의 IP가 필요합니까?
Mihalis Bagos

2
암호화는 전통적으로 도메인 이름을 보내기 전에 적용되기 때문입니다. 이를 완화하는 SNI 는 아직 보편적으로 지원되지 않습니다. XP에서 IE를 제외 할 것입니다.
phihag 2012 년

@Mihalis : phihag의 의견에 추가하기 위해 Windows Mobile 6.5 및 이전 버전, Android 2.x 및 이전 버전, Blackberry Browser, XP의 Safari 등도 제외됩니다. 지원 / 지원되지 않는 소프트웨어의 전체 목록은 여기에서 찾을 수 있습니다. : en.wikipedia.org/wiki/Server_Name_Indication#No_support
Lèse majesté

3
여러 하위 도메인을 사용하는 이유에 대해 묻지 않습니다. 별도의 전체 도메인에 대해 묻고 있습니다. 왜 static.stackexchange.com이 아닌 sstatic.net입니까?
Michael Ekstrand

5

Lèse majesté는 주요 요점을 다루었지만 더 확장하기 위해서는 다양한 Stack Exchange 사이트에 대한 단일 도메인을 갖는 것이 사이트를 탐색하는 사람이 JavaScript와 같은 정적 컨텐츠를 한 번만 다운로드한다는 것을 의미합니다. 예를 들어 수퍼 유저로 이동하면 캐시 된 컨텐츠가 동일한 위치에 있기 때문에 캐시 된 컨텐츠를 사용하게됩니다.

이에 대한 YahooGoogle 에 대한 유용한 정보가 더 있습니다 .


5

주된 이유는 쿠키입니다. Niels가 그의 답변에서 제안한 것은 사소한 결과 일 뿐이며 실제 이유는 아닙니다. 쿠키가 없으면 요청 크기가 더 작으므로 대역폭이 절약됩니다.

그러나 실제 차이점은 브라우저 캐시와 다릅니다. 컨텐츠는 정적이므로 (즉, 변경되지 않음) 브라우저는 로컬 하드 디스크에 컨텐츠를 캐시하고 매번 인터넷에서 파일로드를 피할 수 있습니다. 전체 파일 대신 웹 서버는 304 응답을 전송하므로 내용이 변경되지 않았습니다.

사이트에서 쿠키를 사용하는 경우 브라우저는 파일 내용이 사용자마다 다를 수 있다고 생각하므로 해당 파일을 캐시하지 않습니다. 쿠키가없는 도메인에서 파일을 제공하면 브라우저 캐싱이 제대로 작동합니다.

로드 시간을 개선하고 대역폭을 크게 줄인 주된 이유입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.