浏览器如何处理XAP软件包的缓存?

问题描述

| 众所周知,您可以构建一个Silverlight XAP程序包,并在HTML页面或asp.net页面上使用对象标记对其进行引用。 当浏览器第一次由用户引用页面时,从服务器下载XAP软件包时,如果用户刷新相同的页面,是否重新下载相同的XAP软件包或使用缓存的版本? 如果用户导航到另一个使用相同XAP软件包的页面,并且由于该用户所在的上一页而已经下载了XAP软件包,那么浏览器是否使用了缓存版本或转到服务器并再次下载? 如果浏览器一直在使用缓存版本,那么它怎么知道何时使用缓存版本以及何时使用XAP软件包的新版本,因为它可能已经通过新的更改进行了重建?它与软件包的版本号有关吗?     

解决方法

        XAP被视为与图像(png / gif / jpg等)相同的常规资源文件。浏览器在匹配其HTTP缓存条件之前不会下载新副本,这超出了此处的解释范围。我们采用的唯一解决方案是在XAP和tag的URL可以替换版本号之后附加\“?tag \”,这将迫使浏览器重新下载文件。 因此,我们将网址标记为..
MySilverlightClient.xap?v1
MySilverlightClient.xap?v2
因此,即使将其缓存为当前版本也没有问题,但是当服务器端更改了新版本时,我们可以将标签v1更改为其他内容,从而迫使浏览器将其视为新URL并重新下载即使已缓存。     ,        我可以回答您问题的第一部分,那就是当您重新访问/刷新页面时,浏览器使用XAP的缓存副本。实际上,让浏览器下载新副本可能非常有趣! 当然,每个浏览器的行为都不同,IE似乎是在源文件更改后更新XAP的最顽固方式。正如Anthony在评论中指出的那样,根据浏览器的默认内容文件缓存处理,XAP被视为与其他任何内容文件一样。 在这个类似的问题中有一些好的解决方案,它们涵盖了确保XAP更新的其他方法: 使Silverlight XAP文件以编程方式从浏览器缓存中过期