Mashup Builder > Servizi e associazioni dati > Esecuzione di servizi dati in un mashup > Memorizzazione nella cache dei dati di servizio in un mashup
Memorizzazione nella cache dei dati di servizio in un mashup
È possibile attivare la memorizzazione dei dati nella cache per i servizi utilizzati per recuperare i dati in un mashup. La memorizzazione nella cache consente di ridurre il numero di richieste di rete al server, migliorando le prestazioni e l'esperienza dell'utente. Ad esempio, la memorizzazione nella cache di un servizio che impiega diversi secondi per caricarsi può ridurre il traffico di rete, soprattutto quando il servizio viene eseguito di frequente e i dati restituiti non cambiano spesso. Quando la memorizzazione nella cache è attivata e la proprietà CacheDuration è impostata, il risultato del servizio viene memorizzato temporaneamente dal browser fino alla scadenza della cache, che avviene al termine della durata specificata. È inoltre possibile associare un evento al parametro del servizio InvalidateCache per cancellare manualmente i dati memorizzati nella cache per un servizio. In questo modo si ottiene il controllo programmatico sul ciclo di vita della cache. Ad esempio, se un utente aggiorna i dati in una posizione specifica di un mashup, è possibile attivare InvalidateCache per forzare la chiamata successiva per recuperare i dati aggiornati.
Ad esempio, si consideri un mashup che utilizza un servizio per visualizzare i dati meteo in tempo reale. È possibile attivare la memorizzazione nella cache selezionando CacheReturnedData nel pannello Proprietà dati. Impostare CacheDuration su 60000 millisecondi (1 minuto) e per Nome mashup scegliere CacheStrategy per condividere la cache tra istanze di mashup. Se gli utenti ricaricano il mashup entro un minuto, ThingWorx mostra il risultato memorizzato nella cache. Alla scadenza, chiama di nuovo il servizio. Se il mashup accetta parametri di input, ad esempio una città selezionata, è possibile configurare CacheKeyParameters per memorizzare nella cache i dati separatamente per ogni input, se il mashup memorizza nella cache troppe combinazioni o utilizza troppa memoria.
Best practice per la memorizzazione nella cache dei dati del mashup
Utilizzare la memorizzazione nella cache in modo selettivo e attivarla solo per i servizi che restituiscono dati statici o con modifica lenta.
Impostare durate ragionevoli per la cache. Evitare tempi estesi, a meno che gli aggiornamenti dei dati non siano poco frequenti.
Evitare di memorizzare nella cache insiemi di dati di grandi dimensioni. È invece possibile impaginare i risultati o limitare i dati solo a quelli necessari.
Testare le strategie della cache. Utilizzare il debugger della cache durante lo sviluppo per convalidare il comportamento di memorizzazione nella cache.
Attivazione della memorizzazione nella cache per i servizi in un mashup
Per attivare la memorizzazione nella cache per un servizio in un mashup, attenersi alla procedura descritta di seguito.
1. Nel Mashup Builder aprire il pannello Dati, quindi selezionare il servizio dati che si desidera memorizzare nella cache per visualizzarne le proprietà.
2. Nel pannello Proprietà dati, in Avanzate, selezionare la casella di controllo accanto alla proprietà CacheReturnedData.
3. Specificare il numero di millisecondi in cui il risultato deve rimanere memorizzato utilizzando la proprietà CacheDuration.
4. Facoltativamente, specificare la strategia di memorizzazione della cache utilizzando la proprietà CacheStrategy.
5. Per memorizzare nella cache i risultati per parametri di input specifici, selezionare il parametro dall'elenco a discesa dei valori CacheKeyParameters.
6. Fare clic su Salva e quindi su Visualizza mashup.
In fase di esecuzione, i dati di servizio vengono memorizzati nella cache quando il servizio viene eseguito per la prima volta. Vengono memorizzati nella cache tutti i dati restituiti in base ai parametri di input selezionati per il servizio utilizzando la proprietà CacheKeyParameters. Quando il servizio viene eseguito nuovamente, i dati vengono recuperati dalla cache memorizzata fino alla scadenza impostata nella proprietà CacheDuration.
Scelta di una strategia di memorizzazione nella cache
È possibile utilizzare la proprietà CacheStrategy per memorizzare i dati nella cache in uno dei due modi descritti di seguito.
Istanza mashup - Viene generata una cache in base a un identificatore univoco per l'istanza corrente del mashup. Utilizzare questa strategia per garantire una cache separata per ogni istanza di mashup, utile in situazioni in cui l'istanza di mashup visualizza dati differenti, anche se l'entità e il servizio sono gli stessi.
Nome mashup - Viene generata una cache in base ai nomi del mashup, dell'entità e del servizio. Utilizzare questa strategia quando si prevede che gli stessi dati verranno visualizzati in più istanze di un mashup, ad esempio in un widget Raccolta o quando un mashup è incorporato in altri mashup. Questa strategia è meno specifica rispetto alla memorizzazione nella cache delle istanze e prevede la condivisione della cache tra tutte le istanze dello stesso mashup.
Proprietà della memorizzazione dei servizi nella cache
Nella tabella riportata di seguito vengono elencate le proprietà di memorizzazione nella cache disponibili per i servizi nel pannello Proprietà dati.
Proprietà
Descrizione
Tipo di base
Valore di default
Associabile?
CacheReturnedData
Attivare questa opzione per memorizzare nella cache i dati restituiti dal server.
BOOLEAN
False
No
CacheDuration
Imposta la durata in millisecondi del time to live per i dati memorizzati nella cache. Quando i dati vengono memorizzati nella cache, nuovi dati vengono recuperati dal server solo alla scadenza della durata.
INTEGER
CacheStrategy
Controlla la modalità di memorizzazione della cache. È possibile scegliere di memorizzare i risultati memorizzati nella cache in base a Istanza mashup o a Nome mashup.
STRING
Istanza mashup
No
CacheKeyParameters
Apre un elenco a discesa che consente di selezionare i parametri di input da utilizzare per la generazione della chiave della cache. Quando si seleziona un parametro di input del servizio, vengono memorizzati nella cache i risultati del servizio per tale input.
STRING
No
MaxResultSets
Controlla il numero massimo di risultati da memorizzare per il servizio dati. Quando si aggiornano i parametri di input, viene memorizzato nella cache un nuovo risultato. Una volta raggiunto il numero massimo, il risultato meno recente viene eliminato.
INTEGER
10
InvalidateCache
Cancella il risultato memorizzato nella cache per un servizio. Disponibile solo quando la memorizzazione nella cache è attivata. È possibile attivare questo servizio per aggiornare i dati memorizzati nella cache quando si verifica una modifica nel server o per forzare manualmente il recupero di nuovi dati.
* 
Il servizio InvalidateCache è disponibile solo in caso di attivazione di CacheReturnedData.
Servizio
Convalida e risoluzione dei problemi relativi alle prestazioni di memorizzazione nella cache
Sebbene la memorizzazione nella cache migliori le prestazioni della rete, la memorizzazione di una quantità eccessiva di dati in memoria può ridurre la velocità di risposta del mashup e causare problemi di prestazioni. Per ridurre gli effetti di questi problemi, ThingWorx limita automaticamente la quantità di memoria che può essere utilizzata per la memorizzazione nella cache. Se un'applicazione supera la dimensione massima della cache, il sistema elimina automaticamente le voci della cache meno recenti, a partire da quella più datata, finché non si rende disponibile spazio sufficiente per memorizzare il nuovo insieme di risultati. È possibile utilizzare il debugger in fase di esecuzione per monitorare e gestire i dati memorizzati nella cache utilizzati dai mashup. Per aprire il debugger in fase di esecuzione, fare clic sul pulsante Mostra/Nascondi info debug sulla barra degli strumenti del mashup, se è visibile, oppure premere CTRL+ALT+MAIUSC+F9 per visualizzare la barra degli strumenti di esecuzione.
* 
ThingWorx rimuove automaticamente gli elementi memorizzati nella cache quando un servizio raggiunge il numero massimo di risultati memorizzati o quando la dimensione totale della cache supera il limite. Se la cache supera il limite della dimensione totale, ThingWorx elimina prima le voci memorizzate nella cache meno recenti finché non crea spazio sufficiente per memorizzare il nuovo insieme di risultati. Questi limiti contribuiscono a garantire prestazioni ottimali e a impedire un uso eccessivo della memoria nel browser.
L'immagine riportata di seguito mostra il debugger in fase di esecuzione. Nella parte superiore della scheda Cache Data è disponibile un riepilogo in cui sono indicati il numero totale di elementi memorizzati nella cache, la dimensione totale approssimativa della cache e la dimensione massima consentita. Questo riepilogo consente di valutare rapidamente se la memorizzazione nella cache può influire sulle prestazioni.
Per ogni servizio memorizzato nella cache, il debugger mostra le seguenti informazioni:
Nome del mashup - Mashup che ha chiamato il servizio.
Nome del servizio - Servizio specifico che ha memorizzato i dati nella cache.
ID di cache - Identificatore interno utilizzato per raggruppare e identificare i risultati memorizzati nella cache.
Voci dei risultati memorizzate nella cache. Ogni elemento mostra:
Strategia di memorizzazione nella cache per l'elemento memorizzato nella cache.
Dimensione del risultato memorizzato nella cache.
Ora dell'ultimo accesso.
Parametri di input utilizzati nella chiamata al servizio e relativi valori.
Pulsante di eliminazione per rimuovere manualmente la voce della cache.
Quando gli elementi memorizzati nella cache vengono eliminati manualmente o automaticamente, il riepilogo viene aggiornato. È inoltre possibile espandere e comprimere ciascuna sezione. In questo esempio, il primo servizio, getCategories, viene memorizzato nella cache per il nome del mashup. Altri servizi, ad esempio serviceDefsMock, vengono memorizzati nella cache per Mashup Instance. Vengono inoltre elencati i parametri di input memorizzati nella cache e i relativi valori per questo servizio.
È stato utile?