4

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

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

上述所有测试都是在具有相同 IE 设置的同一个盒子上完成的。所以不存在客户端 IE 缓存问题。我确实检查了服务器上的日期和时间,看看是否有任何差异,如Silverlight XAP 中指定的每次 链接都被下载,并且我们的服务器处于相同的日期和时间。

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

4

1 回答 1

4

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

但是,IE 将发送If-Modified-Since和/或If-None-Match在重新请求其缓存中有副本的资源时。因此,服务器可以选择使用 响应304 Not Modified,您确定这没有发生吗?304 没有实体主体,因此是一种廉价的响应。

另请注意,如果服务器无法将任何缓存控制标头与资源一起发送,IE 可能会做出一些奇怪的启发式选择。这些选择之一是在资源非常大的情况下不执行缓存。

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

于 2011-07-21T22:04:06.313 回答