Dienstdaten in Mashups zwischenspeichern
Sie können das Zwischenspeichern von Daten für Dienste aktivieren, die zum Abrufen von Daten in einem Mashup verwendet werden. Das Zwischenspeichern hilft dabei, die Anzahl der Netzwerkanforderungen an den Server zu reduzieren, was die Leistung und das Benutzererlebnis verbessert. Beispielsweise kann das Zwischenspeichern eines Diensts, der mehrere Sekunden zum Laden benötigt, die Netzwerkauslastung reduzieren, insbesondere wenn der Dienst häufig ausgeführt wird und die zurückgegebenen Daten sich nicht häufig ändern. Wenn das Zwischenspeichern aktiviert und die Eigenschaft CacheDuration festgelegt ist, wird das Dienstergebnis vorübergehend vom Browser gespeichert, bis der Cache nach der angegebenen Dauer abläuft. Sie können auch ein Ereignis an den Dienstparameter InvalidateCache binden, um zwischengespeicherte Daten für einen Dienst manuell zu löschen. Damit haben Sie die programmatische Kontrolle über den Cache-Lebenszyklus. Wenn ein Benutzer beispielsweise Daten an einer bestimmten Stelle in einem Mashup aktualisiert, können Sie InvalidateCache auslösen, um den nächsten Aufruf zum Abrufen neuer Daten zu erzwingen.
Stellen Sie sich beispielsweise ein Mashup vor, das einen Dienst verwendet, um Echtzeit-Wetterdaten anzuzeigen. Sie können die Zwischenspeicherung aktivieren. Wählen Sie dazu CacheReturnedData im Fensterbereich Dateneigenschaften aus. Legen Sie CacheDuration auf 60000 Millisekunden (1 Minute) fest und wählen Sie Mashup-Name als CacheStrategy, um den Cache zwischen Mashup-Instanzen freizugeben. Wenn Benutzer das Mashup innerhalb einer Minute neu laden, stellt ThingWorx das zwischengespeicherte Ergebnis bereit. Nach Ablauf der Dauer wird der Dienst erneut aufgerufen. Wenn das Mashup Eingabeparameter akzeptiert, etwa eine ausgewählte Stadt, können Sie CacheKeyParameters so konfigurieren, dass Daten für jede Eingabe separat zwischengespeichert werden. Wenn das Mashup zu viele Kombinationen zwischenspeichert oder zu viel Arbeitsspeicher verwendet.
Optimale Vorgehensweisen für das Zwischenspeichern von Mashup-Daten
• Verwenden Sie die Zwischenspeicherung selektiv, und aktivieren Sie sie nur für Dienste, die statische oder sich langsam ändernde Daten zurückgeben.
• Legen Sie eine angemessene Cache-Dauer fest. Vermeiden Sie lange Cache-Zeiten, es sei denn, die Daten werden selten aktualisiert.
• Vermeiden Sie die Zwischenspeicherung großer Datensätze. Paginieren Sie stattdessen Ergebnisse, oder beschränken Sie Daten auf das Nötigste.
• Testen Sie Cache-Strategien. Verwenden Sie das Debugger-Tool für die Zwischenspeicherung während der Entwicklung, um das Zwischenspeicherungsverhalten zu validieren.
Zwischenspeichern für Dienste in Mashups aktivieren
Gehen Sie wie folgt vor, um das Zwischenspeichern für einen Dienst in einem Mashup zu aktivieren:
1. Öffnen Sie in Mashup Builder den Fensterbereich Daten, und wählen Sie dann den Datendienst aus, den Sie zwischenspeichern möchten, um seine Dateneigenschaften anzuzeigen.
2. Aktivieren Sie im Fensterbereich Dateneigenschaften unter Erweitert das Kontrollkästchen neben der Eigenschaft CacheReturnedData.
3. Geben Sie anhand der Eigenschaft CacheDuration in Millisekunden an, wie lange das Ergebnis gespeichert werden soll.
4. Optional können Sie die Cache-Speicherstrategie mit der Eigenschaft CacheStrategy festlegen.
5. Wählen Sie den Parameter aus der Dropdown-Liste der CacheKeyParameters-Werte aus, um Ergebnisse für bestimmte Parametereingaben zwischenzuspeichern.
6. Klicken Sie auf Speichern und dann auf Mashup anzeigen.
Zur Laufzeit werden die Dienstdaten zwischengespeichert, wenn der Dienst zum ersten Mal ausgeführt wird. Alle zurückgegebenen Daten, die auf Eingabeparametern basieren, welche mit der Eigenschaft CacheKeyParameters für den Dienst ausgewählt wurden, werden zwischengespeichert. Wenn der Dienst erneut ausgeführt wird, werden die Daten aus dem gespeicherten Cache abgerufen, bis die für CacheDuration festgelegte Zeit abläuft.
Strategie für das Zwischenspeichern wählen
Mit der Eigenschaft CacheStrategy können Sie die zwischengespeicherten Daten auf zwei Arten speichern:
• Mashup-Instanz – Ein Cache wird auf Grundlage einer eindeutigen ID für die aktuelle Mashup-Instanz generiert. Verwenden Sie diese Strategie, um zu gewährleisten, dass jede Instanz eines Mashups über einen separaten Cache verfügt. Dies ist nützlich, wenn jede Mashup-Instanz andere Daten anzeigt, selbst dann, wenn die Entität und der Dienst identisch sind.
• Mashup-Name – Ein Cache wird basierend auf dem Mashup-, Entitäts- und Dienstnamen generiert. Verwenden Sie diese Strategie, wenn dieselben Daten voraussichtlich in mehreren Instanzen eines Mashups angezeigt werden, z.B. in einem Sammlungs-Widget oder wenn ein Mashup in andere Mashups eingebettet ist. Diese Strategie ist weniger spezifisch als die Instanz-Zwischenspeicherung, und der Cache wird von allen Instanzen desselben Mashups gemeinsam genutzt.
Eigenschaften der Dienstzwischenspeicherung
Die folgende Tabelle listet die Eigenschaften für das Zwischenspeichern auf, die für Dienste im Fensterbereich Dateneigenschaften verfügbar sind.
|
Eigenschaft
|
Beschreibung
|
Basistyp
|
Standardwert
|
Bindung möglich?
|
|
CacheReturnedData
|
Aktivieren Sie diese Eigenschaft, um die vom Server zurückgegebenen Daten zwischenzuspeichern.
|
BOOLEAN
|
Falsch
|
Nein
|
|
CacheDuration
|
Legt die Lebenszeit für zwischengespeicherte Daten in Millisekunden fest. Wenn Daten zwischengespeichert werden, werden neue Daten erst nach Ablauf der Lebenszeit vom Server abgerufen.
|
INTEGER
|
|
Ja
|
|
CacheStrategy
|
Steuert, wie dieser Zwischenspeicher gespeichert wird. Sie können die zwischengespeicherten Ergebnisse basierend auf Mashup-Instanz oder Mashup-Name speichern.
|
STRING
|
Mashup-Instanz
|
Nein
|
|
CacheKeyParameters
|
Öffnet eine Dropdown-Liste, in der Sie die Eingabeparameter auswählen können, die zum Generieren des Zwischenspeicherschlüssels verwendet werden sollen. Wenn ein Diensteingabeparameter ausgewählt wird, werden die Dienstergebnisse für diese Eingabe zwischengespeichert.
|
STRING
|
|
Nein
|
|
MaxResultSets
|
Steuert die maximale Anzahl von Ergebnissen, die für den Datendienst gespeichert werden sollen. Ein neues Ergebnis wird zwischengespeichert, wenn die Eingabeparameter aktualisiert werden. Das älteste Ergebnis wird gelöscht, wenn das Maximum erreicht ist.
|
INTEGER
|
10
|
Ja
|
|
InvalidateCache
|
Löscht das zwischengespeicherte Ergebnis für einen Dienst. Nur verfügbar, wenn die Zwischenspeicherung aktiviert ist. Sie können diesen Dienst auslösen, um zwischengespeicherte Daten zu aktualisieren, wenn eine Serveränderung auftritt, oder um das manuelle Abrufen neuer Daten zu erzwingen.
|
|
Der Dienst InvalidateCache ist nur verfügbar, wenn CacheReturnedData aktiviert ist.
|
|
Dienst
|
|
Ja
|
Validierung und Problembehandlung der Zwischenspeicherungsleistung
Obwohl die Zwischenspeicherung die Netzwerkleistung verbessert, kann das Speichern von zu vielen Daten im Arbeitsspeicher die Reaktionsfähigkeit des Mashups verringern und zu Leistungsproblemen führen. ThingWorx schränkt automatisch den Arbeitsspeicher ein, der für die Zwischenspeicherung verwendet werden kann, um diese Probleme abzumildern. Wenn eine Anwendung die maximale Cachegröße überschreitet, löscht das System automatisch ältere Cache-Einträge – beginnend mit dem ältesten –, bis genügend Speicherplatz zum Speichern des neuen Ergebnissatzes verfügbar ist. Sie können das Laufzeit-Debugger-Tool verwenden, um zwischengespeicherte Daten, die von Mashups verwendet werden, zu überwachen und zu verwalten. Klicken Sie zum Öffnen des Debugger-Tools zur Laufzeit auf die Schaltfläche Debug-Informationen anzeigen/ausblenden auf der Mashup-Symbolleiste, sofern diese sichtbar ist, oder drücken Sie STRG+ALT+UMSCHALT+F9, um die Laufzeit-Symbolleiste anzuzeigen.
|
|
ThingWorx entfernt zwischengespeicherte Elemente automatisch, wenn ein Dienst die maximale Anzahl gespeicherter Ergebnisse erreicht oder wenn die Gesamtcachegröße den Grenzwert überschreitet. Wenn der Cache die maximale gesamte Größe überschreitet, löscht ThingWorx zuerst die ältesten zwischengespeicherten Einträge, bis ausreichend Speicherplatz zum Speichern des neuen Ergebnissatzes geschaffen wird. Diese Grenzwerte sorgen für eine optimale Leistung und verhindern eine übermäßige Arbeitsspeicherauslastung des Browsers.
|
Die folgende Abbildung zeigt den Debugger zur Laufzeit. Oben auf der Registerkarte Cache Data wird eine Übersicht mit der Gesamtanzahl der im Cache gespeicherten Elemente, eine ungefähre gesamte Größe des Cache und die maximal zulässige Cachegröße angezeigt. Mithilfe dieser Zusammenfassung können Sie schnell beurteilen, ob das Zwischenspeichern die Leistung beeinträchtigt.
Der Debugger zeigt die folgenden Informationen für jeden zwischengespeicherten Dienst an:
• Mashup-Name – Das Mashup, das den Dienst aufgerufen hat.
• Dienstname: Der spezifische Dienst, der die Daten zwischengespeichert hat.
• Cache-ID – Eine interne ID, die zum Gruppieren und Identifizieren zwischengespeicherter Ergebnisse verwendet wird.
• Die zwischengespeicherten Ergebniseinträge. Jedes Element zeigt Folgendes an:
◦ Die Zwischenspeicherungsstrategie für das zwischengespeicherte Element.
◦ Die Größe des zwischengespeicherten Ergebnisses.
◦ Der Zeitpunkt des letzten Zugriffs.
◦ Die Eingabeparameter, die im Dienstaufruf verwendet werden, und ihr Wert.
◦ Eine Schaltfläche zum Löschen, um den Cache-Eintrag manuell zu entfernen.
Wenn zwischengespeicherte Elemente manuell oder automatisch gelöscht werden, wird die Zusammenfassung aktualisiert. Sie können auch jeden Abschnitt erweitern und minimieren. In diesem Beispiel wird der erste Dienst, getCategories, für den Mashup-Namen zwischengespeichert. Andere Dienste wie serviceDefsMock werden für Mashup Instance zwischengespeichert. Die zwischengespeicherten Eingabeparameter und ihre Werte für diesen Dienst werden ebenfalls aufgelistet.