强制每次都在浏览器中加载最新版本的Silverlight应用程序

时间:2010-07-17 22:51:49

标签: silverlight firefox caching

我注意到Firefox并不总是加载最新版本的Silverlight应用程序。 我相信我可以通过在cookie或其他东西中设置'到期'来让我的应用程序始终加载。 我在哪里这样做?

(我发现Firefox每次加载新应用程序几个小时都会愉快地工作,然后下次我尝试加载它时将始终加载缓存的副本..然后我必须手动清除缓存)

2 个答案:

答案 0 :(得分:1)

当HTTP响应偏离与缓存相关的标头时,浏览器通常会使用一些启发式方法来确定是否在后续请求中重用资源。严格来说,他们不应该这样做,但为了表现,有些人会这样做。

一个好的网站可以确保它可以发送的各种资产(包括XAP)具有适当的标头集,以便更加了解资源应如何缓存。

您应该配置的标题是: -

  • 到期
  • 缓存控制
  • 最后-Modifiied
  • 的ETag

如何完成取决于您的服务器平台。

答案 1 :(得分:0)

我们在Firefox中遇到了同样的问题,并找到了一个不涉及设置过期标头等的解决方法。如果您将查询字符串附加到对象标记中的xap源位置,这似乎迫使Firefox重新加载任何更新的xap文件。你不需要改变查询字符串中的值 - 我们开始通过dyanimcally在那里添加一个时间戳值,但它似乎没有必要 - 只要查询字符串中有任何内容,Firefox就会加载最新的XAP。下面是一个对象标记的示例,其中查询字符串值“FirefoxCachingHack”附加到xap文件源URL。

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
      <param name="source" value="CompanyName.Silverlight.UI.xap?FirefoxCachingHack" /> 
      <param name="onError" value="onSilverlightError" />
      <param name="background" value="white" />
      <param name="minRuntimeVersion" value="4.0.50401.0" />
      <param name="autoUpgrade" value="true" />
      <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50401.0" style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
      </a>
</object>