2010-01-28 5 views
6

내가 일하는 회사는 국제 사이트간에 인트라넷 웹 콘텐츠를 캐시하기위한 프록시/WAN 가속기가 있습니다. 한 위치에서 서버에서 호스팅되는 Silverlight 응용 프로그램을 가지고 있지만 다른 위치에서 클라이언트가 액세스하고 있습니다. 사용자가 Silverlight 응용 프로그램을 호스팅하는 웹 페이지에 액세스하면 서버에서 최신 버전이 아닌 프록시에서 캐시 된 부실 xap 파일을 가져옵니다. 로컬 사용자는 요청이 프록시를 거치지 않기 때문에 항상 최신 xap을받습니다.Silverlight xap이 프록시 서버에 의해 캐시되지 않도록하기

캐싱을 방지하기 위해 다른 헤더/메타 데이터 기술을 시도했지만 포함 된 웹 페이지 자체가 신선한 상태로 제공되고 있지만 여전히 이전 .xap 파일이 생성됩니다. 우리의 IT 관리자가 내 사이트의 프록시 캐싱을 사용하지 못하도록하는 것보다 짧은 것은 내가 할 수있는 일은 무엇입니까? 최신 xap 파일이 프록시 대신 서버에서 검색되도록 하시겠습니까? 포함 페이지는 ASP.NET입니다.

답변

4

내가하는 일은 xap 파일의 경로 끝에 쿼리 ​​문자열을 추가하는 것입니다. 그런 다음 쿼리 문자열 변수를 변경하면 프록시 등이이를 새 파일에 대한 요청으로 간주해야합니다. 지금까지 이것은 나를 위해 잘 작동했습니다.

<param name="source" value="ClientBin/SilverlightApplication1.xap?cachepreventer=whatevervalue"/> 

을 그리고 당신은 새 버전을 배포 할 때 다음, 단지 뭔가 다른 "whatevervalue"변경 :

그래서 기본적으로 직선 업 HTML 파일에 .XAP를 삽입 할 때, 당신은이 작업을 수행 할 것입니다. 앱에 여러 곳에서이 기술을 사용해야하는 경우

편집
나는 설정에서 쿼리 문자열 값을 읽고 단지 asp.net을 사용하여 페이지에 작성합니다. 그렇게하면 배포 할 때 한 곳에서 업데이트하면됩니다.

+0

Perfect! 그 트릭, 감사합니다. –

+0

SL 솔루션에서 디스크상의 XAP 파일의 타임 스탬프 (진드기 번호)는 무엇이든간에 저는 파일 이름에 쿼리로 타임 스탬프를 추가하는 작은 ASP.NET 도우미를 구현했습니다. 그런 식으로 완전히 자동이며 아무 곳에서나 업데이트 할 필요가 없습니다. XAP을 ClientBin에 놓으면 사용자가 가져올 때 자동으로 새로 고칩니다. 정말 영리 <매개 변수 이름 = "소스"값 = "<% = Helper.AppendTimestamp ("ClientBin/SilverlightApp.xap ") %>"/> –

+0

: 그런 다음, ASPX에, 내가 좋아하는 뭔가가있다. 나는 그 기술로 전환하기로 결정할 수 있습니다. –

2

당신은 XAP 파일이 검색되고 당신이 그것에 대해 걱정하지 않도록 마다을 확인하려면? - 단지 < 매개 변수 이름 = "소스"값을 사용 = "ClientBin/YourSilverlightapp.xap < % = Guid.NewGuid(). ToString() % > "/ >

물론 이것은 더 무거운 캐시로드에 적합합니다. 위의 도우미 메서드는 클라이언트에 변경 내용 만 전파하려는 경우에 유용합니다.

관련 문제