Ytt*_*ium 50 silverlight firefox
在使用Silverlight时,我注意到Firefox将缓存XAP文件,因此如果我进行更新,用户可能会使用过时的版本.有没有办法强制浏览器每次都重新下载XAP文件,或者只是在更新发布后才强迫它?或者Silverlight配置中是否有设置阻止浏览器完全缓存XAP文件?
谢谢,杰夫
Rom*_*ain 32
查询字符串工作正常,但我不会使用DateTime.Now,因为它强制用户每次都重新下载应用程序.相反,我们使用以下内容:
protected void Page_Load(object sender, EventArgs e)
{
var versionNumber = Assembly.GetExecutingAssembly().GetName().Version.ToString();
this.myApp.Source += "?" + versionNumber;
}
Run Code Online (Sandbox Code Playgroud)
这样,您所要做的就是增加AssemblyInfo.cs文件中的版本号.
And*_*ick 12
最简单的方法:
<param name="source" value="ClientBin/App.xap?<%= DateTime.Now.Ticks %>" />
Run Code Online (Sandbox Code Playgroud)
这就是我在php中所做的.您读取xap文件的日期/时间,并将其作为参数附加到下载链接.通过这种方式,浏览器将新文件版本视为新链接,因此不在其缓存中.
<?php $fdate = date("dHis",filemtime("MyApp.xap")) ?>
<param name="source" value="MyApp.xap?=<?php echo $fdate ?>"/>
Run Code Online (Sandbox Code Playgroud)
简单而且有效.此外,当没有下载更新时,浏览器会继续正确缓存.
您可能会发现Web作者和网站管理员的缓存教程很有帮助。本文档讨论了客户端和服务器之间进行交互的不同缓存(浏览器,代理,网关)以及如何控制缓存。
对我来说,最好的答案来自Chris Cairns.我刚刚调整了一下,调用ToString和GetHashCode,为时间戳生成一个ID:
<param name="source" value="ClientBin/App.xap?<%= System.IO.File.GetLastWriteTime(Server.MapPath("ClientBin/App.xap")).ToString().GetHashCode()%>" />
Run Code Online (Sandbox Code Playgroud)
工作得很好!
您可以发送 HTTP 标头以防止其缓存:
Cache-control: no-cache
Pragma: no-cache
Run Code Online (Sandbox Code Playgroud)
如何执行此操作取决于您所使用的网络服务器。
| 归档时间: |
|
| 查看次数: |
15655 次 |
| 最近记录: |