Delta-Rendering
Das View-basierte Delta-Rendering dient der Performance-Verbesserung der Benutzerinteraktion komplexer Applikationen, wenn nur ein Teil (View) der angezeigten Seite aktualisiert werden muss. Es wird lediglich die View neu gerendert, die tatsächlich geändert wurde. Wenn mehrere Views geändert wurden, dann wird die View gerendert, die die geänderten Views enthält sowie die darunterliegenden geänderten Views, so dass nur ein Bereich auf der Seite ersetzt wird. Für die Programmierung bedeutet dies, dass Sie unnötige Context-Updates vermeiden sollten und ebenfalls keine unnötigen Änderungen an View-Elementen durchführen sollten.
Standardmäßig laufen alle Web-Dynpro-Applikationen ohne Delta-Rendering ab. Sie können das Delta-Rendering mittels Applikationsparameter wdDeltaRendering für eine individuelle Applikation folgendermaßen aktivieren:
Setzen des Delta-Rendering über den Applikationsparameter WDDELTARENDERING
oder
Setzen des Delta-Rendering über den URL-Parameter sap-wd-DeltaRendering
Rufen Sie die URL der Anwendung auf, für die Sie das Delta-Rendering aktivieren möchten.
Aktivieren Sie das Delta-Rendering, indem Sie den URL-Parameter sap-wd-DeltaRendering mit dem Wert ON der URL hinzufügen.
Drücken Sie Enter.
Hinweis
Beachten Sie, dass der URL-Parameter sap-wd-DeltaRendering den Applikationsparameter WDDELTARENDERING übersteuert.
Rufen Sie im Web Dynpro Explorer die Eigenschaften Ihrer Web-Dynrpo-Anwendung durch Doppelklicken auf die Anwendung auf.
Wechsels Sie auf den Tabreiter Parameter.
Wählen Sie im Änderungsmodus über die F4–Hilfe bei Parameter den Eintrag WDDELTARENDERING aus.
Fügen Sie als dazu gehörigen Wert manuell ON ein.
Sichern Sie Ihre Eingaben.
Generell empfehlen wir, das Delta-Rendering für komplexe Seiten, bei denen häufig nur ein Teil der Seite aktualisiert wird, zu verwenden.
Entscheidend für den Erfolg des Delta-Renderings sind:
der Zuschnitt der einzelnen Views
dass nur auf die zu aktualisierenden Objekte (Context, View-Elemente) schreibend zugegriffen wird
Beispiel |
Vorgehen |
|---|---|
Eine Seite enthält mehrere große Tables |
Fügen Sie jede Table in eine separate View ein |
Eine Seite enthält eine TimedTrigger, der nach Updates polled |
Fügen Sie den TimedTrigger in eine separate View ein.
Die Verwendung eines TimedTrigger als Polling-Methode kann zu Performance-Problemen führen. Ende des Hinweises. |
Eine Seite enthält Elemente, die vom Delta-Rendering nicht unterstützt werden (siehe unten) |
Fügen Sie die nicht vom Delta-Rendering unterstützten Elemente in separate Views ein |
Eine Seite enthält einen Bereich, der aufgrund eines InputField onEnter- oder onChange-Events aktualisiert werden soll |
Fügen Sie die zu aktualisierenden Elemente und das auslösende InputField in eine separate View ein |
Das Delta-Rendering zielt darauf ab, nur den durch die Anwendung geänderten Bereich der dargestellten Seite zu aktualisieren. Die Granularität für diese Updates ist eine View. Es wird immer nur ein Bereich auf einmal aktualisiert, entsprechend wird immer die innerste aller geänderten Views umfassende View neu dargestellt. Im ungünstigsten Fall ist dies die oberste View der Anwendung.
Um zu ermitteln, welche Views aktualisiert werden müssen, werden Änderungsoperationen an der Web-Dynpro-Programmierschnittstelle registriert, die dazu führen können, dass sich die Visualisierung einer View ändert:
Navigation
Änderung am UI-Element-Baum
Änderung der Personalisierung
Änderungen am Context und ContextNodeInfos
Meldungen
Es wird dabei nicht geprüft, ob dies tatsächlich zu einer Wertänderung führt. Der bloße Aufruf einer ändernden Methode führt zum Aktualisieren der View.
Zusätzlich führt auch die Interaktion des Benutzers mit Bildschirmelementen zum Neuzeichnen der View.
Hinweis
Context-Mapping
Beachten Sie bei der Verwendung von Context-Mapping, dass eine Änderungsoperation an einem gemappten Context-Knoten und deren Unterknoten zum Aktualsieren jeder View führt, die auf diesen Knoten mappt. Dabei ist es unerheblich, ob die betreffenden Unterknoten oder Attribute in der Entwicklungsumgebung im Mapping übernommen wurden oder nicht.
Da das Delta-Rendering bereits vor dem eher “kostspieligen” Rendering-Vorgang aufsetzt, können in geeigneten Szenarien signifikante Performance-Verbesserungen sowohl im Server als auch im Web Browser erreicht werden.
Die folgenden UI-Elemente unterstützen (noch) nicht das Delta-Rendering:
TimedTrigger
Gantt
Network
InteractiveForm
OfficeControl
Daher wird eine View mit einem oder mehrerer dieser UI-Elemente mit dem Roundtrip aktualisiert.
Verwendet eine Anwendung sehr viele fein-granulare Änderungsoperationen (z.B. SET_ATTRIBUTE-Aufrufe für jedes Feld eines Context-Knotens statt BIND_TABLE), so kann es durch das Delta-Rendering zu Performance-Einbußen kommen.
Fehler im Delta-Rendering können sich durch JavaScript-Fehler beim Aufruf von document.getElementById(...) nach einem Server-Roundtrip ausdrücken oder durch Bildschirmbereiche, die nicht aktualisiert wurden. Beachten Sie in diesen Fällen Hinweis 1021981.
Informationen über das Delta-Rendering in Verbindung mit dem Trace-Tool finden Sie unter Tuning und Fehlersuche.