9

如您所知,您可以构建一个 silverlight XAP 包并在您的 HTML 页面或 asp.net 页面上使用对象标记来引用它。

当浏览器在用户第一次引用页面时从服务器下载XAP包时,如果用户刷新同一个页面,是重新下载同一个XAP包还是使用缓存的版本?

如果用户导航到另一个使用相同 XAP 包的页面,并且由于用户之前所在的页面已经下载了 XAP 包,浏览器是使用缓存版本还是转到服务器并再次下载?

如果浏览器一直使用缓存版本,它如何知道何时使用缓存版本以及何时使用 XAP 包的新版本,因为它可能已经用新的更改重新构建了?它与包的版本号有关吗?

4

2 回答 2

9

XAP 被视为与图像相同的常规资源文件(png/gif/jpg 等)。浏览器在匹配其 HTTP 缓存条件之前不会下载新副本,这超出了此处解释的范围。我们采用的唯一解决方案是在 XAP 的 URL 后附加“?tag”,并且 tag 可以替换版本号,这将迫使浏览器重新下载文件。

所以我们将我们的网址标记为..

MySilverlightClient.xap?v1
MySilverlightClient.xap?v2

等等所以即使它被缓存为当前版本也没有问题,但是当服务器端更改新版本时,我们可以将我们的标签 v1 更改为其他内容,这将迫使浏览器将其视为新 URL 并重新下载它即使它被缓存。

于 2011-06-14T14:03:21.433 回答
2

我可以回答您问题的第一部分,即当您重新访问/刷新页面时,浏览器会使用 XAP 的缓存副本。事实上,让浏览器下载新副本会很有趣!

当然,每个浏览器在这里的行为都不同,当源文件发生变化时,IE 似乎是最固执的更新 XAP。正如 Anthony 在评论中指出的那样,根据浏览器的默认内容文件缓存处理,XAP 被视为与任何其他内容文件一样。

在这个类似的问题中有一些很好的解决方案,涵盖了确保更新 XAP 的其他方法:

以编程方式使 Silverlight XAP 文件从浏览器缓存中过期

于 2011-06-14T13:58:56.660 回答