How do you force Firefox to not cache or re-download a Silverlight XAP file?

后端 未结 17 685
渐次进展
渐次进展 2020-11-29 02:07

When working with Silverlight, I\'ve noticed that Firefox will cache the XAP file, so if I do an update, a user may be stuck using an outdated version. Is there a way to fo

相关标签:
17条回答
  • 2020-11-29 02:24

    The query string works perfectly, but I wouldn't use DateTime.Now, because it forces the user to re-download the app every time. Instead, we use the following:

    protected void Page_Load(object sender, EventArgs e)
    {
        var versionNumber = Assembly.GetExecutingAssembly().GetName().Version.ToString();
        this.myApp.Source += "?" + versionNumber;
    }
    

    This way all you have to do is increment the version number in the AssemblyInfo.cs file.

    0 讨论(0)
  • 2020-11-29 02:26

    For me, the best answer is from Chris Cairns. I've just adapted it a little, calling ToString and GetHashCode, generating an ID to the timestamp:

    <param name="source" value="ClientBin/App.xap?<%= System.IO.File.GetLastWriteTime(Server.MapPath("ClientBin/App.xap")).ToString().GetHashCode()%>" />
    

    Works just fine!

    0 讨论(0)
  • 2020-11-29 02:26

    You can append the source url in the object tag with the last-write date of the XAP file. Check the code at my blog.

    0 讨论(0)
  • 2020-11-29 02:29

    I'm getting this to work by a combination of the suggestions above:

    1. Set meta tag cache-control/pragma http-equiv attributes to 'No-Cache'
    2. Use an ASP.NET page to host the silverlight control (as opposed to an html page)
    3. Set the Source property of the ASP.NET Silverlight control in the code behind, appending a time stamp to the .xap url e.g.

      Silverlight1.Source = "ClientBin/MyApplication.xap?" + DateTime.Now.ToString("dd-MM-yy-HH:mm:ss");

    0 讨论(0)
  • 2020-11-29 02:31

    A super simple idea: just add a fake query string to the url.

    <param name="source" value="app.xap?r12345"/>
    

    Most servers should ignore it and server the file normally--depends on your server. If you get really clever, you could make the hosting page dynamic and automatically append a tick-count or date-time string to the query string. This ensures that you get caching when you want it, but force a download when there's a change.

    Ideally, your server should do this for you. But if not...

    0 讨论(0)
  • 2020-11-29 02:31

    So far, the only solution that I have found, once the problem occurs, is to clear the Firefox cache.

    A better solution would be much better.

    0 讨论(0)
提交回复
热议问题