2011-06-14 3 views
9

아시겠지만 실버 라이트 XAP 패키지를 만들고 HTML 태그 또는 asp.net 페이지에서 object 태그를 사용하여 참조 할 수 있습니다.브라우저는 어떻게 XAP 패키지의 캐싱을 처리합니까?

사용자가 처음 페이지를 참조 할 때 브라우저가 XAP 패키지를 다운로드하면 사용자가 동일한 페이지를 새로 고치면 은 동일한 XAP 패키지를 다시 다운로드합니까? 아니면 캐시 된 버전을 사용합니까?

사용자가 동일한 XAP 패키지를 사용하는 다른 페이지로 이동하고 사용자가 이전 페이지로 인해 XAP 패키지가 이미 다운로드 된 경우 브라우저에서 캐시 된 버전을 사용하거나 서버로 이동하여 다운로드합니다. 다시? 브라우저가 캐시 된 버전의 모든 시간를 사용하는 경우는 새로운 변화와 재건되었을 수도 있기 때문에 XAP 패키지의 새 버전을 사용할 때 캐시 된 버전을 사용하는 경우

, 어떻게 알 수 있습니까? 패키지의 버전 번호와 관련이 있습니까?

답변

9

XAP는 이미지 (PNG/GIF/JPG와 같은 일반 리소스 파일로 간주됩니다

업데이트되는 XAP을 보장하기 위해 다른 방법을 포함이 유사한 문제의 좋은 해결책이 있습니다 기타). 브라우저는 HTTP 캐시 조건이 일치 할 때까지 새 복사본을 다운로드하지 않습니다.이 조건은 여기에서 설명 할 수 없습니다. 우리가 수정 한 유일한 해결책은 XAP의 URL 다음에 "? tag"를 추가하고 브라우저가 파일을 다시 다운로드하도록하는 버전 번호를 태그로 대체 할 수 있습니다.

그래서 우리는 같이 우리의 URL을 태그 ..

이가 아무 문제가 없지만, 새 버전이 서버 측에서 변경 될 때, 우리는 변경할 수 있습니다 현재 버전의 캐시 그래서 경우에도
MySilverlightClient.xap?v1 
MySilverlightClient.xap?v2 

등 우리 v1에 태그를 추가하면 브라우저가이를 새로운 URL로 간주하고 캐시 된 경우에도 다시로드 할 수 있습니다.

+0

XAP를 사용하여 모든 HTML 파일에서 버전 태그를 업데이트해야한다는 것을 기억해야합니다. 대부분의 경우 문제가별로 없기 때문에 일반적으로 HTML 파일 하나에 포함되어 있기 때문입니다. ClientBin 폴더의 캐시 제어 헤더를 구성하는 것이 왜 효과가 없습니까? – AnthonyWJones

+0

캐시 제어 헤더를 구성하는 데 많은 경험이 없지만 더 많은 정보를 얻을 수있는 방향으로 나를 안내해 주시겠습니까? – ActiveX

+0

URL 정보를 변경하면 브라우저가 캐시에서 리소스를 사용하는 대신 리소스를 다시 다운로드한다는 내용의 URL을 변경합니까? 이것은 간단합니까? – ActiveX

2

질문의 첫 번째 부분에 대답 할 수 있습니다. 즉, 페이지를 다시 방문하거나 새로 고칠 때 브라우저가 XAP의 캐시 된 복사본을 사용합니다. 사실, 브라우저에서 새 사본을 다운로드하는 것은 아주 재미있을 수 있습니다!

각 브라우저는 여기에서 다르게 작동합니다. IE가 소스 파일이 변경되었을 때 XAP를 업데이트하는 데있어 가장 완고한 것처럼 보입니다. 앤서니 (Anhony)는 코멘트에서 XAP가 브라우저의 기본 콘텐츠 파일 캐시 처리에 따라 다른 콘텐츠 파일처럼 취급되고 있다고 지적했다.

Making the Silverlight XAP file expire from browser cache programmatically

+2

IE는 서버가 어떤 캐싱 동작이 필요한지 명시하지 않은 경우 자체 규칙을 구성합니다. 서버가 올바른 캐시 제어 헤더를 제공하면 대부분의 브라우저는 일관되게 작동합니다. 대부분의 "XAP 캐싱"질문에 대한 대답은 "PNG 캐싱"질문과 거의 같습니다 : HTTP에서 캐싱이 어떻게 작동하는지 이해하십시오. – AnthonyWJones

+0

@AnthonyWJones 감사합니다. –

관련 문제