Sommario
< Home
Stampa

Cache remota

Abbiamo visto che il web storage è una specie di cache locale dove memorizzare localmente, in modo permanente, dati ed informazioni delle applicazioni. Il vantaggio di questa soluzione è che è possibile salvare in modo permanente informazioni che si mantengono al ricaricamento della pagina. Tuttavia il limite che rimane è quello di non avere informazioni permanenti accessibili da qualsiasi browser, ovvero quel che manca è un servizio di cache globale.

La cache remota è un servizio messo a disposizione da questo sito per i miei studenti per poter salvare su un server remoto degli oggetti JSON associandoli ad una chiave, e poi richiamarli successivamente, da qualsiasi browser e qualsiasi client.

Questo sistema permette quindi di scrivere applicazioni per il web dove possiamo salvare dati ed elaborazioni e riutilizzarli in una sessione successiva, ad esempio per memorizzare i TODO di un utente, oppure memorizzare lo stato di un gioco, o infine salvare informazioni inserite dall’utente1. Per attivare la cache remota occorre registrarsi ed ottenere il token di accesso via mail cliccando a questo indirizzo: http://ws.cipiaceinfo.it/register/

La cache remota consiste come il local storage in un servizio remoto dove si memorizzano coppie chiave (stringa) – valore (stringa). E’ composta da due servizi, uno per scrivere o modificare una chiave (SET) ed uno per leggere il dato avendo la chiave (GET).

La struttura delle due chiamate è riassunta nella seguente tabella:

SET

urlhttps://ws.cipiaceinfo.it/cache/set
method: "POST"
headers
"content-type": "application/json", 
"key": "MIOTOKEN"
body:  {
"key": "chiave", 
"value": "valore" 
}

GET

urlhttps://ws.cipiaceinfo.it/cache/get
method: "POST"
headers
"content-type": "application/json", 
"key": "MIOTOKEN"
body:  {
"key": "chiave"
}

Vediamo un esempio di funzionamento. Ipotizziamo che si debba salvare un oggetto myObject con la chiave myKey. Il codice da eseguire per eseguire la SET sarà questo:

const myObject = { 
  firstName: "Mario", 
  lastName: "Rossi" 
}; // oggetto da salvare
const jsonObject = JSON.stringify(myObject); // JSON da oggetto

const myToken = "XXXXXXXXXXXXXXXX"; // token ottenuto via mail 
const myKey = "person"; // chiave dell'oggetto

fetch("http://ws.cipiaceinfo.it/cache/set", { 
   method: "POST",
   headers: {
       "content-type": "application/json",
        "key": myToken
   },
   body: JSON.stringify({
            key: myKey,
            value: jsonObject
         }
})
.then(r => r.json())
.then(r => {
         console.log(r.result); // se tutto è ok, stamperà "ok"
      })

Per leggere (operazione GET) invece il codice sarà questo:

let myObject;
const myToken = "XXXXXXXXXXXXXXXX"; // token ottenuto via mail 
const myKey = "person"; // chiave dell'oggetto

fetch("http://ws.cipiaceinfo.it/cache/get", { 
   method: "POST",
   headers: {
       "content-type": "application/json",
        "key": myToken
   },
   body: JSON.stringify({
            key: myKey,
         }
})
.then(r => r.json())
.then(r => {
         myObject = JSON.parse(r.result); // r.result conterrà l'oggetto richiesto
      })

  1. L’accesso a questo servizio non è pubblico, ma avviene mediante registrazione ad utenti autorizzati. Per richiedere l’autorizzazione contattatemi. ↩︎