IIS中哪些设置可能导致XAP每次从新IE访问页面时下载?

时间:2011-07-21 16:13:44

标签: silverlight iis silverlight-4.0 xap

我有一个示例程序除了Hello World之外什么都不做。我打开IE并进入我的开发环境并访问silverlight,它首次加载XAP然后如果我关闭IE并再次打开,则XAP不会被下载。由于没有任何变化,我希望不要下载。

在QA环境中部署之后,我第一次打开IE,它按预期加载XAP。 现在关闭IE并再次打开,我希望它不会下载XAP但它再次下载XAP。但是如果我在页面上刷新它就不会下载XAp。所以这只发生在我们的QA环境中打开的Fresh IE上。

所有上述测试均在具有相同IE设置的同一个盒子上完成。所以没有客户端IE缓存问题。我确实检查了服务器上的日期和时间,看看silverlight XAP gets downloaded everytime中是否有任何差异 链接和我们的服务器在相同的日期和时间。

有没有人知道如何防止IIS每次都不下载?

1 个答案:

答案 0 :(得分:4)

IE中的默认设置意味着新的IE实例始终会在首次遇到时尝试获取每个唯一的URL。即使在上次获取资源时随资源一起发送的缓存标头表明资源仍然是新鲜的,IE也会这样做。

然而,当IE重新请求其缓存中有副本的资源时,IE将发送If-Modified-Since和/或If-None-Match。因此,服务器可以选择使用304 Not Modified进行响应,您确定没有发生吗? 304没有实体主体,因此反应便宜。

另请注意,如果服务器无法使用资源发送任何缓存控制标头,IE可以进行一些奇怪的启发式选择。其中一个选择是资源非常大,不执行缓存。

如果您还没有这样做,我建议您在IIS管理器中的ClientBin文件夹上设置一些合理的Expiration(在IIS7中选择ClientBin文件夹,选择“HTTP Response Header”,打开“Set Common Headers ..”,启用过期Web内容。