2010-02-09 6 views
3

우리는 동시로드를 가능하게하려는 의도로 두 개의 도메인에서 제공되는 .js를 분할하는 방법을 모색 중입니다.https를 통한 .js 파일의 동시로드

질문 : 우리는 a) 그 목적을 위해 하위 도메인을 사용할 수 있고 b) 동시로드가 https에서도 유효할까요? 예를 들어

, 우리는 다음과 같은 두 개의 파일을 요청하고 싶습니다 :

https://www.example.com/firstfile.js 
https://subdomain.example.com/secondfile.js 

행할 수 있습니까? 대안?

+0

호기심에서 벗어나 파일을 병합하기 전에 병합하면 어떤 경우에도 하나의 트랜잭션 만 제공합니까? – Romain

+1

@Romain 우리가 궁극적으로 비교하고 싶은 것은 ... 어느 것이 더 낫겠습니까? : 1 개의 큰 .js 파일 요청 또는 2 개의 더 작은 .js 파일 요청. –

답변

0

a) 예. 동일한 출처 정책 문제를 피하려면 document.domain을 사용하십시오.

b) 잘 모르겠지만 왜해서는 안되는 지 이유를 생각할 수 없습니다.

+0

고마워, 페카. 두 개의 서로 다른 URL에서 파일을 요청하는 것보다 document.domain이 해결할 수있는 것을 명확히 할 수 있습니까? –

+0

'document.domain'은 도메인 1의 스크립트가 도메인 2의 콘텐츠에 액세스하는 보안 문제 (동일한 원본 정책이라고 함)를 얻지 못하도록합니다. –

1

스크립트로 인한 문제는 병렬 다운로드를 차단한다는 것입니다. HTTP/1.1 사양은 브라우저가 호스트 이름 당 두 개 이상의 구성 요소를 병렬로 다운로드하지 못하도록 제안합니다. 여러 호스트 이름에서 이미지를 제공하는 경우 두 개 이상의 다운로드가 동시에 발생하도록 할 수 있습니다. 그러나 스크립트가 다운로드되는 동안 브라우저는 다른 호스트 이름에서도 다른 다운로드를 시작하지 않습니다. (source)

문제가 있습니다.

+0

@camomileCase : 이것이 우리가하는 정확한 이유입니다. 그것의 'per hostname'부분에 주목하십시오. 아이디어는 여러 도메인에서 요청함으로써 큰 ​​(r) .js 파일에 대한 문제를 제거한다는 것입니다. –

+0

@DA 이것은 가능해야하지만 이것이 성능 향상을 가져올 지 여부는 의심 스럽습니다. 스크립트의 * execution *은 계속해서 하나씩 실행되고 * 다운로드 *는 한 번만 발생하고 데이터는 캐시됩니다. –

+1

마지막 문장이 가장 중요한 문장입니다. "그러나 스크립트가 다운로드되는 동안 브라우저는 다른 호스트 이름에도 다른 다운로드를 시작하지 않습니다." – camomileCase

3

알고있는 한, 작동하지 않습니다. 스크립트는 병렬 다운로드를 차단하도록 설정됩니다. 그 이유는 스크립트를 병렬로로드하면 자바 스크립트에서 경쟁 조건이 발생할 수 있기 때문입니다. 소형화 또는 주문형 적재가 최상의 옵션입니다.

+0

내가 틀렸다면 저를 시정하십시오, 그러나 나는 평행 한 다운로드 문제가 단일 도메인으로 제한되어 있다고 생각했습니다. (참고로, 우리는 축소도하고 있습니다) –

+0

병렬 * 다운로드 *와 병렬 * 실행 *에는 차이가 있습니까? 나는 왜 이전이 작동하지 않을지 볼 수 없다. 후자는 매트가 설명한 이유 때문에 확실히 불가능합니다. –

+0

나는 병렬 실행에 대해 걱정하지 않는다. 모든 실행은 jQuery의 $ (document) .ready에 래핑됩니다. 우리는 단지 서버 요청과 다운로드 속도 측면에서 어떤 성능 향상을 찾을 수 있도록 노력하고 있습니다. –

0

"빠른 웹 사이트"또는 "더 빠른 웹 사이트"(나는 당신이 읽을 것을 권장합니다)에 제시된 대안은 javascript 함수/메소드를 사용하여 다이어그램 적으로 자바 스크립트 파일을로드 할 것을 제안합니다. 요소.

주제에 대해 조사하고 싶을 수도 있지만 고려해 볼만한 좋은 습관입니다.

관련,

3

내가 네트워크의 지연 시간 (왕복을 할 때마다 전화를 위해 추가 시간 손실의 일종)을 고려해야한다 생각합니다. 대기 시간은 HTTP 호출 응답을 죽이는 것입니다.

개인적으로 나는 HTTP 호출 수를 줄이는 추세를 따른다.
내 모든 파일을 하나로 병합 (+ minimize + gzip)

+0

최소화 + gzip 부분에 동의합니다. 또한 서버가 캐시 관리 (Content-Expires 및 유사)를 향상시키기 위해 모든 관련 헤더를 채워야하므로 친숙한 브라우저는 한 번만 서버를 공격 할 것입니다. – Romain

관련 문제