Utilizzando i browser moderni è possibile salvare i più svariati dati per renderli disponibili offline. In altri script abbiamo trattato argomenti come IndexedDB o l'utilizzo di LocalStorage e SessionStorage. A questi andiamo ad integrare le Cache API.
Come si può intuire dal nome, il loro compito è molto basilare: fornendo un url o un oggetto request salveranno la risposta. La disponibilità di spazio è praticamente illimitata: si parla di svariate centinaia di Mb, a seconda del browser e del disco disponibile. Prima di poterla utilizzare, la cache, va inizializzata:
const cache = await caches.open('mia-cache');Per inserire informazioni abbiamo a disposizione tre diversi metodi: add, addAll e put. In tutti e tre i casi verranno restituite delle promise che saranno risolte solo dopo che la risposta è stata inserita in cache, e rigettate in caso di errore.
Con il metodo add salveremo le risposte solo se il loro status code è 200.
// Creiamo una richiesta fornendo l'url o la posizione di un file
await cache.add(new Request('https://mio-servizio.com/mia-api'));
await cache.add(new Request('/mio-file.json'));
// Fornendo una stringa creerà automaticamente la richiesta
await cache.add('https://mio-servizio.com/mia-api');
await cache.add('/mio-file.json');Analogamente il metodo addAll permetterà di salvare più richieste alla volta, la promise verrà rigettata al fallimento di una richiesta.
const urls = ['/mio-file.json', '/mio-file-2.json']; await cache.addAll(urls);
Infine, il metodo put, ci permetterà di salvare qualsiasi risposta da un servizio, non obbligatoriamente con status code 200, o crearne una manualmente
cache.put('/mio-file.json');
cache.put('/mio-file.json', new Response('{"name": "Morgan","lastName":"Pizzini"}'));
cache.put('https://mio-sito.com/mio-file.json');Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Implementare il throttle in JavaScript
Le cron expression di un workflow di GitHub
Centralizzare gli endpoint AI Foundry con Azure API Management
Creare una libreria CSS universale: Immagini
Evidenziare una porzione di testo in un pagina dopo una navigazione
Gestione degli eventi nei Web component HTML
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Integrare SQL Server in un progetto .NET Aspire
Integrazione di Copilot in .NET Aspire
Configurare lo startup di applicazioni server e client con .NET Aspire
Ridurre il reflow ottimizzando il CSS
Gestione delle scrollbar dinamiche in HTML e CSS
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Gli oggetti CallOut di Expression Blend 4.0
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Utilizzare dati in formato XML in XAML
- Le DirectInk API nella Universal Windows Platform
- Sfruttare una CDN con i bundle di ASP.NET


