如您所知,您可以构建一个Silverlight XAP包并使用HTML页面或asp.net页面上的object标签引用它。
当浏览器在用户第一次引用页面时从服务器下载XAP包时,如果用户刷新同一页面,会重新下载相同的XAP包,还是使用缓存版本吗
如果用户导航到使用相同XAP包的另一个页面,并且由于用户所在的上一页已经下载了XAP包,浏览器是否使用了缓存版本或转到服务器并下载又一次?
如果浏览器一直使用缓存版本,它如何知道何时使用缓存版本以及何时使用新版本的XAP软件包,因为它可能已经使用新的更改进行了重建?它是否与包的版本号有关?
答案 0 :(得分:9)
XAP被视为与image(png / gif / jpg等)相同的常规资源文件。浏览器不会下载新的副本,直到其HTTP Cache条件匹配,这超出了解释范围。我们改编的唯一解决方案是在XAP的URL后附加“?tag”,标签可以替换将迫使浏览器重新下载文件的版本号。
所以我们将我们的网址标记为..
MySilverlightClient.xap?v1
MySilverlightClient.xap?v2
等。因此,即使它是针对当前版本进行缓存也没有问题,但是当在服务器端更改新版本时,我们可以将标记v1更改为其他强制浏览器将其视为新URL并重新下载的内容,即使它是缓存的。
答案 1 :(得分:2)
我可以回答您问题的第一部分,即当您重新访问/刷新页面时,浏览器会使用XAP的缓存副本。事实上,让浏览器下载新副本会非常有趣!
每个浏览器在这里的行为都不同,当然,IE在源文件发生变化时似乎最顽固地更新XAP。正如Anthony在评论中指出的那样,根据浏览器的默认内容文件缓存处理,XAP被视为任何其他内容文件。
在这个类似的问题中有一些很好的解决方案,涵盖了确保XAP更新的其他方法:
Making the Silverlight XAP file expire from browser cache programmatically