현재 Silverlight 4 응용 프로그램에서 MEF를로드 온 디맨드 Xaps에 성공적으로 사용하고 있습니다. 캐싱을 사용하여 성능을 향상시키고 자합니다. MEF가 WebClient를 사용하여 브라우저의 다운로드 메커니즘을 사용하는 Xap을 다운로드한다는 것은 제 이해입니다. 따라서 캐싱 정책이 적용됩니다.Silverlight, MEF, 주문형 Xap로드 및 캐싱 이해
제 테스트에서 보았던 결과는 약간 혼란스럽고 브라우저마다 결과가 다릅니다. 분명히, 첫 번째 액세스에서 캐시를 지우면 온 디맨드 Xaps가 서버에 요청됩니다. 또한 응용 프로그램 세션 기간 동안 Xaps는 한 번만 다운로드됩니다. 지금까지 좋은 모든 것.
그러나 나는 Xaps가 와 사이에 캐시 될 것으로 기대했다. 그러나 아니요 - 나는 다음 (사용 피들러) 관찰 :
Internet Explorer를
I는 온 디맨드 라이트 XAP는 서버에서 요청하지 않는 브라우저 (Ctrl + F5)를 새로 고침 및로드 된 경우 로컬 캐시에서. 그러나 브라우저를 다시 시작하면 모든 것이 다시 다운로드됩니다. 우우. 그때 온 디맨드 라이트 XAP이 서버에서 다시 요청하는 페이지 (Ctrl + F5)를 새로 고치면
는 파이어 폭스와 크롬는
- 캐싱은 전혀 발생하지 않는다. 우우. 그리고 분명히 브라우저를 다시 시작하면 캐싱이 발생하지 않습니다.
나에게 이상적인 동작은 브라우저가 Xap을로드해야 할 때 If-Modified-Since 헤더로 서버에 쿼리하여 새 버전이 있는지 확인하고 다운로드 한 경우 그렇지 않으면 로컬 캐시에서로드하십시오. 그러나 어느 테스트에도 If-Modified-Since 헤더가 서버로 전송 된 것을 볼 수 없었습니다. 그래서 내 질문 :
MEF를 사용하여 투명하게 달성 할 수있는 방법이 있습니까? 아니면 다른 프레임 워크? 아니면 격리 된 저장소 (yuck)를 사용하여 내 캐싱 계층을 롤백해야합니까?
온 디맨드 Xap 로딩과 같은 방식으로 캐싱이 이루어지기 때문에 상자 밖에서 작동하는 것이 놀랍습니다.
당신이 알아 낸 것을 기쁘게 생각합니다. 참고로, IIS Express가 출시되면서 Visual Studio 웹 서버를 더 이상 사용할 이유가 확실하지 않습니다. –