50 votes

Comment forcer Firefox à ne pas mettre en cache ou télécharger à nouveau un fichier Silverlight XAP?

Lors de l'utilisation de Silverlight, j'ai remarqué que Firefox mettrait le fichier XAP en cache. Par conséquent, si j'effectue une mise à jour, un utilisateur risque de rester bloqué avec une version obsolète. Existe-t-il un moyen de forcer le navigateur à télécharger à nouveau le fichier XAP à chaque fois ou de ne le forcer qu'après la publication d'une mise à jour? Ou y a-t-il un paramètre dans la configuration Silverlight qui empêche le navigateur de mettre en cache le fichier XAP?

Merci, jeff

32voto

Gromix Points 1443

La chaîne de requête fonctionne parfaitement, mais je n'utiliserais pas DateTime.Now , car elle oblige l'utilisateur à télécharger à nouveau l'application à chaque fois. Au lieu de cela, nous utilisons les éléments suivants:

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

Pour ce faire, il vous suffit d'incrémenter le numéro de version dans le fichier AssemblyInfo.cs .

12voto

Andy Mehalick Points 268

Manière la plus simple:

 <param name="source" value="ClientBin/App.xap?<%= DateTime.Now.Ticks %>" />
 

6voto

FlappySocks Points 1554

C'est ce que je fais en php. Vous lisez la date / heure du fichier xap et vous l'ajoutez en tant que paramètre au lien de téléchargement. De cette manière, le navigateur considère les nouvelles versions de fichier comme de nouveaux liens, et donc pas dans son cache.

 <?php $fdate = date("dHis",filemtime("MyApp.xap")) ?>

<param name="source" value="MyApp.xap?=<?php echo $fdate ?>"/>
 

Simple et ça marche. En outre, les navigateurs continuent à mettre en cache correctement les fichiers en l'absence de mises à jour à télécharger.

5voto

JwJosefy Points 86

Pour moi, la meilleure réponse est celle de Chris Cairns . Je viens de l'adapter un peu, en appelant ToString et GetHashCode, générant un ID pour l'horodatage:

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

Fonctionne très bien!

5voto

converter42 Points 3264

Vous trouverez peut-être utile le didacticiel de mise en cache pour les auteurs Web et les webmasters . Ce document décrit les différents caches à travers lesquels le client et le serveur interagissent (navigateur, proxy, passerelle) et comment contrôler la mise en cache.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X