Scopo
Indica alla shell nativa se occorre attivare la cache delle query.
Nella versione iOS9 del sistema operativo utilizzato dai dispositivi Apple è stato rimosso il supporto per i database SQLite. Pertanto, poter utilizzare i database SQLite in applicazioni offline prodotte con Instant Developer, è stato necessario fare in modo che la shell nativa si occupasse di operare sui vari database utilizzati dall'applicazione.
Pertanto, a partire dalla versione 14.0, le applicazioni offline, su dispositivi iOS 9 e successivi, utilizzano la shell nativa per operare sui database SQLite.
Tale modalità risulta più lenta delle versioni precedenti poiché ogni query deve essere inviata, tramite un apposito messaggio sincrono, alla shell nativa che la esegue sul database richiesto ed invia la risposta all'applicazione che la utilizza. Tale scambio di messaggi può richiedere anche 10ms su un iPad2. Pertanto, a partire dalla versione 14.0 di Instant Developer, è stata aggiunta una cache delle query che permette di ridurre, ove possibile, il numero di messaggi inviati alla shell nativa durante l'esecuzione delle query.
Il funzionamento è il seguente: ogni volta che l'applicazione esegue una query, il sistema decide se inserirla in una cache che viene poi gestita e svuotata nei seguenti casi:
- quando la connessione al dataabse viene chiusa
- quando il numero di query presenti in cache è superiore a 100
- se è stata aperta una transazione, ogni volta che la transazione viene chiusa
- se ci sono stati errori durante una transazione e viene effettuato un rollback della stessa
Quando il sistema decide di svuotare la cache invia un unico messaggio alla shell nativa che contiene tutte le query presenti in cache. La shell nativa esegue tutte le query singolarmente e, se si presentano errori durante l'esecuzione di una delle query, informa l'applicazione web segnalando l'errore. In questo modo, per esempio, se si eseguono 1000 inserimenti su database:
- se non è attiva la cache vengono inviati 1000 messaggi sincroni alla shell nativa. Questo, su dispositivi un po' datati, potrebbe richiedere più tempo per inviare e ricevere i messaggi che non per eseguire fisicamente le query sul database;
- se è attiva la cache vengono inviati 10 messaggi contenenti ciascuno 100 query. In questo caso l'overhead richiesto per la comunicazione scende a 100 ms.
- None: indica al sistema che la cache delle query non è attiva. Pertanto l'esecuzione di ogni query comporta l'invio di un messaggio sincrono alla shell nativa, che esegue la query ed invia la risposta all'applicazione. Normalmente tale modalità viene attivata se si desidera che ogni query venga eseguita immediatamente.
- Partial: indica al sistema che la cache delle query è attiva. In questa modalità il sistema svuota la cache (ed esegue le query contenute nella cache se presenti) anche prima di ogni istruzione SELECT. Questa modalità (che è quella predefinita) è più sicura in quando fa sì che tutte le query di aggiornamento, inserimento, cancellazione vengano inserite in cache mentre le istruzioni di lettura causino lo svuotamento della cache PRIMA che la lettura venga effettuata.
- Full: indica al sistema che la cache delle query è attiva. A differenza della modalità Partial il sistema non svuota la cache prima delle istruzioni di SELECT. Normalmente questa modalità viene attivata solo se si è sicuri che le istruzioni di SELECT non leggano gli stessi dati che le istruzioni di INSERT/UPDATE/DELETE modificano. Per esempio se si aggiorna un documento Categorie e nell'evento AfterSave si legge e si aggiorna un documento Prodotti la SELECT può essere eseguita anche se l'aggiornamento di Categorie non è stato effettuato. In questo caso il sistema esegue le seguenti operazioni:
- la query di aggiornamento di Categorie viene inserita in cache
- la query di lettura di Prodotti viene eseguita immediatamente senza che la cache venga toccata
- la query di aggiornamento di Prodotti viene inserita in cache
Si consiglia di utilizzare il valore None solo se il codice dell’applicazione non funziona correttamente quando è attiva la modalità Partial.
Sintassi
Quando letta
Ritorna un numero intero che indica la modalità attuale della cache delle query. Tale numero è uno dei valori presenti nella lista valori CacheQueriesValues. Il valore predefinito della proprietà è Partial.
Quando scritta
Indica al sistema quale modalità utilizzare per la cache delle query.
Ultima modifica: 23/03/2021 / Validità: da 14.0.6000