2010-03-09 11 views
1

저는 ASP.NET, JQuery 및 WCF 웹 서비스를 사용하여 AJAX 집중적 인 웹 응용 프로그램을 구축하고 있으며 JavaScript 파일 및 CSS에 대한 스크립트 결합 및 압축을 처리하는 HTTP 처리기를 작성하고 있습니다. 파일. 나는 스크립트를 결합하지 않는 것이 일반적으로 덜 선호되는 접근법이며, 아마도 이것이 결국 내가 끝낼 방법이라고 확신하지만, 나의 질문은 이것이다 ...자바 스크립트 스크립트 결합 및 캐싱

내 JS 파일이 너무 많아서 내가 사용하는 컨트롤은 어쨌든 첫 번째로드 이후에 브라우저에 의해 캐시되지 않습니까? 이렇게 많은 컨트롤이 내 웹 응용 프로그램의 여러 페이지에서 발견 될 수 있기 때문에 실제로 모든 스크립트를 결합하여 하나의 파일 (모든 페이지마다 다를 수 있음)을 제공하거나 개별 파일을 제공하는 것이 더 빠릅니다 캐시 된? 스크립트 결합을 사용함으로써 브라우저의 캐싱 기능을 잃어 버렸습니다. 나는 결합 된 스크립트를 캐시 할 수 있지만 조합 된 스크립트는 모든 페이지마다 다를 수 있지만 개별 제어 스크립트를 사용하면 각 페이지가 캐싱되고 각 페이지 호출마다 새로운 스크립트의 수가 최소화됩니다.

이 말이 맞는가요? 생각?

답변

1

제공하는 JS 파일 수가 적을수록 서버 왕복 횟수가 적기 때문에 페이지가 더 빠릅니다. 나는 수동으로 하나의 파일 (또는 가능한 한 적은 파일), 모든 CSS 코드를 하나의 파일 등으로 모든 일반적인 js 코드를 넣어, 파일을 결합하는 처리기를 사용하는 것에 대해 걱정하지 않습니다. 처리기는 파일을 결합하는 처리 시간이 걸릴 것이므로 해당 요금도 지불하게됩니다. IIS에서 gzip 압축을 켜서 처리 할 수 ​​있습니다. 프로덕션 환경에서 사용되는 자바 스크립트 파일에 YUI Compressor과 같은 것을 실행합니다.

처리기가 파일 내용을 페이지간에 변경하면 브라우저에서 해당 내용을 캐시 할 수 없습니다. SSL을 사용하는 경우 브라우저가 파일을 캐시하지 않으므로이 지점은 문제가됩니다.

EDIT 일부 브라우저 (FF와 같은)는 SSL 콘텐츠를 캐시 할 수 있지만 일부는 캐시하지 못하도록 수정되었습니다.

+0

흥미로운 점은 SSL이이 모든 측면에서 중요한 역할을한다는 것을 몰랐습니다. 웹 응용 프로그램은 SSL을 사용하고 있으며로드해야하는 JS 파일이 많이 있습니다. 코드 분리 및 확장 성을 유지하려면 파일을 별도로 유지해야합니다 (적어도 개발 용).Visual Studio에서 컴파일시 일부를 처리하도록 할 수는 있지만 성능상의 문제가되는 것을 보지 못했기 때문에 HttpHandler의 패널티 비용을 처리하는 데 신경 쓰지 않아도됩니다. – Chris

+0

또한 Firefox 3 이상에서 SSL URL의 CSS 및 JS 파일을 캐시 할 수 있다고 생각합니다. – Chris

0

일반적으로 덜 선호

는 라이브 JS입니다? 나는 JavaScriptMVC가 모든 코드를 하나의 파일로 압축하는 것으로 생각한다. 개발이 아니라 생산을 위해 컴파일 될 때 ... 그것은 내가 생각하기에 무거운 무게이다.

0

일반적으로 모든 스크립트를 결합하는 것이 좋습니다. 이 경우 http 오버 헤드가 줄어 듭니다. 축소 된 컨트롤 스크립트는 대개 아주 작습니다. 드물게 아주 큰 컨트롤을 사용할 때 주 js와 결합 할 수 없습니다.

1

기타 언급 : 사용자가 가지고있는 하나의 정적 JS 파일과 하나의 정적 CSS 파일에서 minify, gzip 및 캐싱을 설정합니다 (만료 시간 설정 및 etags 지원 참조). 그 위에 가능한 한 빨리 CSS 파일을로드하고 가능한 한 늦게 JS 파일을로드하는 것이 좋습니다 (JS 파일로드는 다른 다운로드를 차단하므로 가능한 한 빨리 CSS가있는 경우 브라우저가 페이지를 렌더링하는 것이 더 빠릅니다)). 스프라이트는 작은 이미지/아이콘이 많은 경우에도 도움이됩니다. 하위 도메인의 정적 컨텐트를로드하면 브라우저에서 동시에 다운로드하는 데 도움이되며 해당 하위 도메인의 쿠키를 모두 삭제하여 http 헤더 크기를 줄일 수 있습니다.
성능 분석을 위해 YSlow과 상담 할 수 있습니다. 훌륭한 도구입니다!