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

  1. 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

RisorsaStrategia
Shell (home, pagina offline, manifest)Precache all'install
Pagine delle ricette (HTML)Prima la rete; se fallisce, cache e poi /offline/
CSS, JS, immaginiStale-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.

Prompt correlati