짧은 대답
메모리. 그러나 브라우저가 이미 클라이언트에 정보를 캐시하고 있음을 기억하십시오.
그것이 Bundling and Minification 페이지에서 말했다 것 같은 긴 대답은 모두의
첫째, 번들이 브라우저에 의해 캐시됩니다 : 당신이 번들 하나 개의 파일을 업데이트하면
, 새로운 토큰 번들 쿼리 문자열 매개 변수에 대해 생성되고 클라이언트가 번들이 포함 된 페이지를 다음에 요청하면 전체 번들을 에 다운로드해야합니다. 각 자산이 개별적으로 나열되는 전통적인 마크 업에서는 변경된 파일 인 만 다운로드됩니다. 자주 변경되는 자산은 번들링에 적합하지 않을 수 있습니다.
번들 및 소형화는 주로 첫 번째 페이지 요청로드 시간을 향상시킵니다. 웹 페이지가 요청되면 브라우저는 애셋 (JavaScript, CSS 및 이미지)을 캐싱하므로 번들링 및 축소는 동일한 페이지를 요청하거나 동일한 사이트의 페이지를 요청할 때 어떤 성능도 제공하지 않습니다. 동일한 애셋을 요청합니다 . 애셋에 만료 기한 헤더 을 올바르게 설정하지 않았고 번들 및 축소를 사용하지 않으면 브라우저 신선도 추론에 따라 일 후에 애셋이 오래되었다고 표시되며 브라우저는 각 브라우저에 대한 유효성 검사 요청을 요구합니다 자산
또한 그들이 피들러 테스트 같은 페이지에서 촬영 한 이미지에, 여기에 표시된 : 그것은 브라우저에 의해 캐시 된대로
는 지금까지 우리는 안전합니다.
그러나, 나는 조금 더 가서 컨트롤러에서이 코드를 사용하여 작은 테스트 프로젝트를 생성 :보기에
public ActionResult Index()
{
return View(HttpRuntime.Cache);
}
그리고이 코드 :
<p>
@Html.DisplayForModel()
</p>
나에게 다음 사항을 준 결과 :
첫 방송 :
:ViewCacheEntry:System.Web.Mvc.RazorViewEngine, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35:View:Index:Home:::__AppStartPage__~/_appstart.cshtml
:ViewCacheEntry:System.Web.Mvc.RazorViewEngine, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35:View:Index:Home::Mobile:__AppStartPage__~/_appstart.vbhtml
두 번째 실행 : 모더 나이저, 부트 스트랩, JQuery와 및 CSS (! 내 번들) 캐시에있는 당신이 보게 될 두 번째 실행에
:ViewCacheEntry:System.Web.Mvc.RazorViewEngine, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35:Partial:_LoginPartial:Home::Mobile:
:ViewCacheEntry:System.Web.Mvc.RazorViewEngine, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35:View:Index:Home:::System.Web.Optimization.Bundle:~/bundles/modernizr
:ViewCacheEntry:System.Web.Mvc.RazorViewEngine, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35:Partial:_LoginPartial:Home:::System.Web.Optimization.Bundle:~/bundles/bootstrap__AppStartPage__~/_appstart.cshtml
:ViewCacheEntry:System.Web.Mvc.RazorViewEngine, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35:View:Index:Home::Mobile:System.Web.Optimization.Bundle:~/bundles/jquerySystem.Web.Optimization.Bundle:~/Content/css__AppStartPage__~/_appstart.vbhtml
.
- 에지 :
- 파이어 폭스 개발자 에디션 : 우리는 2 개 개의 다른 브라우저에서 동일한 페이지를로드하는 경우 우리는 심지어 떨어져로드 5mins을 한 후, 같은 쿼리 문자열을 얻을 것이다 이유는 설명 할
https://technet.microsoft.com/en-us/sysinternals/bb896645를 시도해보고 css 파일에 적중이 발생할 때를 볼 수 있습니다. –
감사합니다. procmon을 잊어 버렸습니다. 하나의 특정 .js 파일에 대해 procmon을 볼 때 이해하지 못했던 행동을 보았지만 대답은 예입니다. 번들링을 사용하면 .NET에서 파일에 대한 변경 (버전 해시를 업데이트 함)을 인식하는 방법이 명확하지 않습니다. 스크립트를 수정했지만 수정 된 파일을 완전히 읽지 못했기 때문입니다. 클라이언트 측에서 다르게 동작합니다. 다음 단계 나는 ILSpy로 코드에 뛰어 들고있는 것 같아 호기심에 사로 잡혔다. 원래 대답을 찾았으니 덕분에 – nothingisnecessary