Trasformare il tuo sito in una PWA installabile e funzionante offline
Trasforma un sito esistente in una Progressive Web App: manifest con icone, service worker con strategie di cache per tipo di risorsa, pagina offline, aggiornamenti sicuri e test. Pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Include 4 variabili personalizzabili e puoi copiarlo gratuitamente con un clic.
Intermedio · Codice · In attesa di revisione editoriale
Prompt
Agisci come sviluppatore web specializzato in Progressive Web App, service worker e strategie di cache.
Contesto:
- Sito o applicazione: {{sito}}
- Stack e hosting: {{stack}}
- Livello di funzionamento offline: {{livello_offline}}
- Priorità: {{priorita}}
Se il sito ha aree riservate, dati personali o contenuti che cambiano spesso, chiedimi come vengono gestiti prima di decidere cosa mettere in cache.
Consegna:
1. Il manifest dell'applicazione web: nome, nome breve, colori, display, start_url, scope e icone (192 e 512 px, più una versione maskable), con i tag da aggiungere all'HTML.
2. Il service worker con una strategia per tipo di risorsa, spiegata in una tabella: precache dello scheletro dell'app, stale-while-revalidate per CSS, JS e immagini, network-first con timeout per l'HTML e solo rete per le API autenticate.
3. La pagina offline e come viene servita quando la rete non risponde.
4. Versionamento delle cache, pulizia di quelle vecchie nell'evento activate e un flusso di aggiornamento che avvisi l'utente della nuova versione invece di ricaricare a sorpresa.
5. Il codice di registrazione del service worker e l'alternativa con Workbox se si adatta meglio a {{stack}}.
6. I limiti noti su iOS e Safari da verificare, precisando che vanno controllati nella documentazione attuale.
7. Come testarlo: pannello Application dei DevTools, simulazione offline, verifica di installabilità e casi di test concreti.
Vincoli:
- Il sito deve essere servito in HTTPS; ricordamelo se l'hosting non lo garantisce.
- Non mettere in cache risposte con dati personali o di sessione.
- Non aggiungere notifiche push né sincronizzazione in background se non lo chiedo nelle priorità.
- Segna con [DA COMPLETARE] colori, nomi e icone che non ti ho fornito.
Formato: tabella delle strategie, un blocco di codice per file con il suo percorso e un elenco di test.Come usarlo
- Descrivi il sito, quali parti devono funzionare offline e dove è ospitato. 2. Aggiungi i file, pubblica su un ambiente di test in HTTPS e controlla il pannello Application dei DevTools. 3. Su uno smartphone reale prova l’installazione, la modalità aereo e l’arrivo di una nuova versione.
Esempio d'uso
Sito: ricettario con ricerca e schede ricetta · Stack: sito statico generato con Astro su Netlify · Offline: leggere le ricette già visitate · Priorità: installabile su Android e caricamento rapido.
Esempio di risultato
Strategie di cache
| Risorsa | Strategia |
|---|---|
| Shell (home, pagina offline, manifest) | Precache all'install |
| Pagine delle ricette (HTML) | Prima la rete; se fallisce, cache e poi /offline/ |
| CSS, JS, immagini | Stale-while-revalidate |
public/sw.js
const VERSION = 'v1';
const SHELL = `shell-${VERSION}`;
const PAGINE = `pagine-${VERSION}`;
const RISORSE = `risorse-${VERSION}`;
const PRECACHE = ['/', '/offline/', '/manifest.webmanifest']; // [DA COMPLETARE: CSS/JS con hash di Astro]
self.addEventListener('install', (event) => {
event.waitUntil(caches.open(SHELL).then((cache) => cache.addAll(PRECACHE)));
});
self.addEventListener('activate', (event) => {
const attuali = [SHELL, PAGINE, RISORSE];
event.waitUntil(caches.keys().then((chiavi) =>
Promise.all(chiavi.filter((c) => !attuali.includes(c)).map((c) => caches.delete(c)))));
});
const salva = (nome, request, res) => {
if (res.ok) { const copia = res.clone(); caches.open(nome).then((c) => c.put(request, copia)); }
return res;
};
self.addEventListener('fetch', (event) => {
const { request } = event;
if (request.method !== 'GET' || new URL(request.url).origin !== location.origin) return;
if (request.mode === 'navigate') {
event.respondWith(fetch(request).then((res) => salva(PAGINE, request, res))
.catch(async () => (await caches.match(request)) ?? caches.match('/offline/')));
return;
}
event.respondWith(caches.match(request).then((inCache) => {
const rete = fetch(request).then((res) => salva(RISORSE, request, res)).catch(() => inCache);
return inCache ?? rete;
}));
});
Cambiando VERSION, l'evento activate elimina le cache vecchie. Netlify serve sempre in HTTPS, requisito per i service worker…
Dati chiave
- Categoria
- Programmazione e sviluppo · Creare siti web
- Tipo di output
- Codice
- Livello
- Intermedio
- Pensato per
- ChatGPT, Claude, Gemini e Microsoft Copilot
- Verificato in
- In attesa di verifica editoriale
- Variabili
- Sito o applicazione, Stack e hosting, Funzionamento offline e Priorità
- Lingua
- Italiano
- Prezzo
- Gratuito, senza registrazione
- Aggiornato
- 07/11/2026
Domande frequenti
Cosa serve perché un sito sia installabile come PWA?
Come minimo, HTTPS e un manifest con nome, icone e start_url. Ogni browser ha i propri criteri; un service worker con risposta offline migliora l’esperienza e alcuni browser ne tengono conto.
Perché non ricaricare automaticamente la pagina quando si aggiorna il service worker?
Perché l’utente potrebbe perdere ciò che stava facendo, come un form compilato a metà. Meglio avvisarlo che c’è una nuova versione e lasciargli scegliere quando ricaricare.
Cos’è stale-while-revalidate?
Una strategia che serve subito la copia in cache e intanto scarica dalla rete la versione aggiornata per la visita successiva. È veloce e mantiene i contenuti ragionevolmente aggiornati.
A cosa serve questo prompt?
Trasforma un sito esistente in una Progressive Web App: manifest con icone, service worker con strategie di cache per tipo di risorsa, pagina offline, aggiornamenti sicuri e test.
Con quali strumenti di IA funziona?
È pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Non lo abbiamo ancora verificato in questi strumenti, quindi i risultati possono variare da uno all'altro.
Come personalizzo il prompt?
Clicca su «Personalizza» e compila le variabili (Sito o applicazione, Stack e hosting, Funzionamento offline e Priorità). Il testo si aggiorna all'istante e poi puoi copiarlo con un clic. I valori vengono salvati solo nel tuo browser.
Serve esperienza per usarlo?
È di livello intermedio: conviene conoscere l'argomento per fornire un buon contesto e valutare il risultato con occhio critico.
Questo prompt è gratuito?
Sì. Tutti i prompt di HomeCasa Prompts sono gratuiti, senza registrazione né abbonamento. Puoi usarli anche in progetti professionali.
Posso fidarmi dell'output dell'IA?
Consideralo una bozza di alta qualità: verifica sempre dati, cifre e affermazioni importanti prima di pubblicare o prendere decisioni.