众所周知,您可以构建一个Silverlight XAP程序包,并在HTML页面或asp.net页面上使用对象标记对其进行引用。
当浏览器第一次由用户引用页面时,从服务器下载XAP软件包时,如果用户刷新同一页面,会重新下载相同的XAP软件包还是使用缓存的版本?
如果用户导航到另一个使用相同XAP软件包的页面,并且由于该用户所在的上一页而已经下载了XAP软件包,那么浏览器是否使用了缓存版本或转到服务器并再次下载了该版本?
如果浏览器一直在使用缓存版本,那么它怎么知道何时使用缓存版本以及何时使用XAP软件包的新版本,因为它可能已经通过新的更改进行了重建?它与软件包的版本号有关吗?
最佳答案
XAP被视为与图像(png/gif/jpg等)相同的常规资源文件。浏览器不会下载新副本,直到其HTTP缓存条件匹配为止,这超出了此处的解释范围。我们采用的唯一解决方案是在XAP的URL后面加上“?tag”,并且tag可以替换版本号,这将迫使浏览器重新下载文件。
因此,我们将网址标记为..
MySilverlightClient.xap?v1
MySilverlightClient.xap?v2
因此,即使将其缓存为当前版本也没有问题,但是当服务器端更改了新版本时,我们可以将标签v1更改为其他名称,这将迫使浏览器将其视为新URL并重新下载即使已缓存。