2010-12-20 11 views
1

Grundsätzliche AnforderungenWie Setup Silverlight XAP-Caching das gleiche in allen Browsern

ich arbeiten muss eine SL-Anwendung, die im Browser oder Out-of-Browser ausgeführt werden kann. Ich möchte den Browser:

  • Cache der XAP-Datei
  • laden xap aus dem Cache, wenn er sich nicht geändert hat oder erneut herunterladen, wenn sie sich geändert hat.

Mehr Details

eine Zukunft expires Header Einstellung löst offensichtlich das Caching Problem, aber dann kann ich nicht zwingen den Benutzer die neueste Version herunterzuladen. Normalerweise würde ich nur eine Querystring zur URL hinzufügen (zB url?v=1), aber ich kann dies nicht tun, da dies die Out-of-Browser-Funktionalität bricht. zB denkt die App, dass sie nicht installiert ist, obwohl sie tatsächlich installiert ist.

kein Cache

Wenn ich Cache-Control-no-cache, Chrome und Firefox korrekt eine Anfrage an den Server für den xap senden, aber den Cache verwenden gesetzt, wenn ein 304 zurückgeführt wird. IE8 lädt die Datei einfach erneut herunter, genau wie Safari.

Must-revalidate

Einstellung Cache-Control-must-revalidate wieder richtig in Chrome und Firefox funktioniert, aber Safari lädt immer die xap wieder während IE8 immer den Cache verwendet.

Wie richte ich das ein, wie am Anfang dieser Frage beschrieben?

Antwort

1

Ich bin mir nicht sicher, dass Chrome/Firefox streng "korrekt" ist, Sie haben dem Browser doch nicht gesagt, dass er den Inhalt zwischenspeichern soll oder sogar, dass der Inhalt zwischengespeichert werden kann.

Anstelle von No-Cache versuchen Sie stattdessen "Cache-Control: max-age = 15". Sehen Sie, ob das IE überzeugt, dass es den Inhalt trotz seiner großen Größe zwischenspeichern sollte (weshalb es es ursprünglich nicht zwischenspeichert).

Für die OOB-Installation verwenden Sie die Methode Application des Objekts CheckAndDownloadUpdateAsync. Hinweis: Sie müssen den Benutzer darüber informieren, dass die App nach dem Herunterladen eines Updates neu gestartet werden soll.

+0

danke, das ist der Trick für IE getan. Safari lädt es immer vom Server neu, aber ich kann damit leben. Ich habe kein Problem mit der Aktualisierung der OOB, aber Installationsstatus wird in der In-Browser-App falsch erkannt, wenn Sie die URL ändern (zB um eine Installationsschaltfläche anzuzeigen) –

+0

tatsächlich Caching in Safari auf dem Mac funktioniert . Es ist nur auf Windows, wo es nicht und wir alle wissen, dass niemand Safari unter Windows verwendet :). Also Problem gelöst. Danke noch einmal. –

Verwandte Themen