2010-12-14 7 views
0

Ich habe eine jstree, die ihre Daten von einem DB über einen WCF-Dienst mit JSON lädt.Aktualisieren von jstree nach erfolgreichem Umbenennungsereignis (vielleicht WCF und/oder Caching-Problem?)

ich es geschafft jstree des Umbenennungs Kontextmenüpunkt „arbeiten“ zu bekommen, was bedeutet: Ich einen Ajax-Aufruf an die jstree umbenennen gebunden Ereignis, so dass, wenn der Benutzer einen Knoten umbenennt, sagt es eine WCF-Methode, um die Datenbank zu aktualisieren (um den neuen Namen zu "speichern").

Problem: Wenn ich auf eine andere Seite gehe und später wieder komme, hat der Knoten auf den alten Namen zurückgekehrt!

Es sieht so aus, als ob irgendeine Art von Caching läuft, entweder in jstree oder im Browser oder WCF, und der Baum wird nicht irgendwie aktualisiert.

Die Daten stammen aus einer Datenbank über eine WCF-Dienstmethode über JSON. Wenn Sie die Seite zum ersten Mal besuchen, werden die Daten geladen. Aber wenn Sie zurück auf die Seite kommen, ist es nicht: der Haltepunkt in der serverseitigen Lade-Methode wird nie getroffen. Es scheint mir wahrscheinlich, dass entweder:

  • jstree die Daten zwischengespeichert hat und versucht nicht, sie zu laden wieder

OR

    (aber warum es nicht umbenannt bleiben?)
  • jstree fragt den Dienst, aber WCF gibt nur dieselben Daten aus einem Cache wieder, anstatt die Dienstmethode tatsächlich auszuführen.

ODER

  • Der Browser die Anforderung wird das Caching und das gleiche Ergebnis zurück zu jstree geben, ohne dass die WCF-Methode aufrufen.

Irgendwelche Ideen? Wie kann ich das überprüfen?

Antwort

1

Weil Sie sich nicht sicher, ob Sie Caching-Problem, das ich Ihnen vorschlagen, in der WCF-Methode enthalten, die Sie von jstree die folgende Zeile nennen (zum Beispiel als die erste Zeile in der Methode Körper):

WebOperationContext.Current.OutgoingResponse.Headers.Set (
    HttpResponseHeader.CacheControl, 
    "max-age=0"); 

Es folgt auf cache revalidation. Der Webbrowser oder ein Proxy, der wahrscheinlich auch verwendet wird, wird nicht die zwischengespeicherte Datenquelle ohne erneute Validierung (Aufruf derselben WCF-Methode) auf dem Server verwenden. Sie können auch andere cache-control options verwenden.

+0

Das hat funktioniert. Vielen Dank! – MGOwen

Verwandte Themen