2009-06-24 6 views
18

YuiCompressor를 사용하여 자체 JS를 압축하지만 MicrosoftAjax.js가 축소되지 않은 이유가 무엇입니까? 또는 압축 된 버전이있는 경우 압축 된 버전을 실행한다고 말하는 설정이 있습니다. 아니면 그것을 디 컴파일하고 스크립트 리소스를 직접 축소해야합니까?MicrosoftAjax.js가 축소되지 않은 이유가 있습니까?

+0

+1 좋은 질문입니다! –

+0

내가 얻은 대답을 보면, MicrosoftAjax.js의 축소/압축 버전을 즉시 사용할 수있는 것으로 보이지 않습니다. DIY가 내가 선택한 대답에서 언급 한 것처럼가는 길입니다. 조쉬에게 언급했듯이 ASP.NET 3.5에서 지금 스크립트를 결합 할 수 있습니다 (http://msdn.microsoft.com/en-us/library/cc488552.aspx). 우리는 아직 3.5로 이주하지 않았지만 우리가 조사 할 때 그것을 조사 할 것입니다. 그것에 대한 여러 리뷰를 읽었습니다. 또한, jQuery를 프로젝트에 추가 한 지 얼마되지 않아 jQuerified가 될 수있는 모든 것을 jQuerifying하고 있습니다. – nickytonline

+2

위의 내 의견은 더 이상 사실이 아닙니다. 데이브 워드 (Dave Ward)의 대답은 좋은 것입니다. 따라서 DIY는 없습니다. – nickytonline

답변

23

내가이 잘못된 답변에 놀랐어요 목록에 MicrosoftAjax.js를 추가 http://www.codeproject.com/KB/aspnet/AspNetOptimizer.aspx를 참조하십시오.

ASP.NET AJAX는 항상 MicrosoftAjax.js의 디버그 및 압축 버전을 제공합니다. web.config의 디버그 설정과 ScriptManager's ScriptMode property이 어떤 스크립트가 참조되는지 제어합니다.

또한 the "retail" setting을 사용하여 압축 된 스크립트를 강제로 적용 할 수 있습니다.

+1

Dave에게 감사드립니다. 잘 알고 있습니다. – nickytonline

+0

Brilliant, 나는 "retail"설정에 대해 전혀 몰랐다. 우리 회사는 여전히 디버그 모드 등에서 프로덕션 환경을 배포하는 습관을 가지고있다. – Matt

-2

나는 쉽게 이해할 수 있도록 남겨 두었다고 가정 할 수 있습니다. 이미 암시했듯이, 압축 할 수없는 이유를 알고 있습니다. 그렇지 않으면 믿기를 좋아할지도 모릅니다. 마법 같은 픽시 먼지로 뿌리지 않아요. :)

[그리고 그것을 직시하자. MS는 코드의 크기를 두려워하지 않았습니까?]

0

편집 : 내 대답은이 대답을 쓸 당시 .NET 3.5에 대한 경험이 없었기 때문입니다. 나는 이제 그들이이 분야에서 몇 가지 많은 개선이 이루어 졌음을 깨닫는다.


분명히 MS는 JavaScript 파일 크기가 매우 중요하다고 (미친) 생각하지 않습니다. 또한 MS Ajax에 대한 경험을 토대로 마크 업에 여러 개의 SCRIPT 태그 (때로는 10 개 이상)를 주입합니다. 이 태그는 WebResource.axd 핸들러에서 스크립트를 가져옵니다. 따라서 페이지를 실행하는 데 필요한 Javascript를 얻으려면 10 개 이상의 요청을해야합니다. 어리석은 행동을 추가하기 만하면 처리기 URL에 미친 쿼리 문자열이 표시되어 브라우저에서 스크립트를 캐시하지 못하게됩니다. 나를 특히Visual Studio now has Intellisense for jQuery 때문에, 완전히 MS 아약스 도랑 훨씬 더 라이브러리 인 jQuery로 전환하는

이 정신은 충분한 이유가 있었다.

+0

누구가이 답변을 기권 했습니까? 그 이유는 무엇입니까? –

+0

ASP.NET Ajax에 대한 의견을 공유하기 때문에 확실하지 않습니다. –

+0

나는 너무 downvoted있어 - 아마도 우리는 석사 직원이 있습니까? :) 나는 투표 한 이유에 대해 유권자들이 설명해주기를 바란다 ... – CJM

1

당신은 오히려 어느 것 :

  1. MicrosoftAjax.js 이미 난독 화, 압축되어 있습니다.
  2. MicrosoftAjax.js는 압축되지 않은 상태로 제공되며 사용자가 직접 읽고 읽을 수 있습니다.
+3

왜 둘 다? jQuery는 둘 다 제공됩니다. –

+0

두 가지 버전을 모두 사용하는 것이 쉽고 유용하기는하지만 쉬운 방법을 사용하려면 압축되지 않은 버전을 제공해야합니다. +1은 투표의 자격이 없었기 때문에 +1했습니다. – CJM

+0

@Neil N. 동의합니다. 둘 다 왜 안됩니까? 압축되지 않은 사용을 개발할 때는 축소/난독 화 된 버전을 사용하십시오. – nickytonline

3

당신이

enableScriptMinification="true" 

옵션이 필요하고

+0

이전에이 기사를 읽었지만 게시 해 주셔서 감사합니다. 내가 아는 한 Microsoft Ajax의 상자 솔루션이었습니다. DIY가 이걸 진행하는 방법 인 것 같습니다. – nickytonline

7

System.Web.Extensions의 모든 스크립트가 축소되었습니다. Dave Ward의 훌륭한 대답이 지적한대로 두 버전이 있습니다. ScriptManager는 기본적으로 web.config가 디버그 모드 일 때 디버그 버전을 사용합니다. 정품 설정 또는 debug = "false"로 해제하고 스크립트를 봅니다.

또한 WebResourceHandler 또는 ScriptResourceHandler를 통해 제공되는 스크립트가 실제로 캐시됩니다.최상의 방법으로 캐시됩니다. 영원히 계속 방문 할 필요는 없습니다. querystring은 암호화 된 데이터를 포함하고 있기 때문에 그대로 있습니다. 어셈블리 이름을 포함하여 스크립트 리소스에 대한 정보가 포함되어 있고 캐시 플러딩 공격을 방지하기 때문에 암호화됩니다.

여기에서 담당자를 찾고 있지 않다면 더 자세한 정보를 원합니다.

+1

캐싱되는 WebResourceHandler 또는 ScriptResourceHandler에 대해 알아두면 좋을 것이다. 따라서 변경하고 재배포 할 때 암호화 된 쿼리 문자열이 변경 되었기 때문에 다른 파일로 다시 캐싱됩니다. – nickytonline

+2

예. 리소스를 변경하면 쿼리 문자열이 변경되어 새로 캐시 된 항목이 생깁니다. 또한 스크립트도 gzip으로 압축되어 있다고 언급하지 않았습니다. – InfinitiesLoop

관련 문제