如何设置Silverlight xap缓存在所有浏览器中的工作方式相同

时间:2010-12-20 20:26:07

标签: asp.net silverlight caching silverlight-4.0

基本要求

我有一个可以在浏览器中或浏览器外运行的SL应用程序。我希望浏览器:

  • 缓存xap文件
  • 如果xap未更改,请从缓存中加载xap,如果已更改,则重新下载。

更多详情

设置未来expires标题显然可以解决缓存问题,但我无法强制用户下载最新版本。通常我只会在网址中添加一个查询字符串(例如url?v=1),但我不能这样做,因为这会破坏浏览器外的功能。例如,应用程序认为它实际上并未安装。

无缓存

如果我将Cache-Control设置为no-cache,Chrome和Firefox会正确地向服务器发送请求以获取xap,但如果返回304,则使用缓存。 IE8只是像Safari一样再次下载文件。

必须-重新验证

Cache-Control设置为must-revalidate再次在Chrome和Firefox中正常运行,但Safari总是再次下载xap,而IE8始终使用缓存。

如何按照本问题开头的说明进行设置?

1 个答案:

答案 0 :(得分:1)

我不确定Chrome / Firefox是否严格“正确”,你毕竟没有告诉浏览器它应该缓存内容甚至内容是可缓存的。

而不是no-cache尝试“Cache-Control:max-age = 15”。看看它是否说服IE它应该缓存内容尽管它的大小(这就是为什么它最初不缓存它)。

对于OOB安装,请使用Application对象的CheckAndDownloadUpdateAsync方法。请注意,您需要在下载更新后通知用户重新启动应用程序。