Transformer votre site en PWA installable avec mode hors ligne

Transformez un site existant en Progressive Web App : manifest avec icônes, service worker avec stratégies de cache par ressource, page hors ligne, mises à jour sûres et tests. Conçu pour ChatGPT, Claude, Gemini et Microsoft Copilot. Il comprend 4 variables personnalisables et vous pouvez le copier gratuitement en un clic.

Intermédiaire · Code · En attente de relecture éditoriale

Prompt

Agis comme un développeur web spécialisé dans les Progressive Web Apps, les service workers et les stratégies de cache.

Contexte :
- Site ou application : {{site}}
- Stack et hébergement : {{stack}}
- Niveau de fonctionnement hors ligne : {{niveau_hors_ligne}}
- Priorités : {{priorites}}

Si le site comporte des espaces privés, des données personnelles ou du contenu qui change souvent, demande-moi comment ils sont gérés avant de décider ce qui sera mis en cache.

Livrables :
1. Le manifest de l'application web : nom, nom court, couleurs, display, start_url, scope et icônes (192 et 512 px, plus une version maskable), avec les balises à ajouter au HTML.
2. Le service worker avec une stratégie par type de ressource, expliquée dans un tableau : précache du squelette de l'application, stale-while-revalidate pour le CSS, le JS et les images, network-first avec délai maximal pour le HTML, et réseau uniquement pour l'API authentifiée.
3. La page hors ligne et la façon de la servir quand le réseau échoue.
4. Le versionnage des caches, le nettoyage des anciens dans l'événement activate et un flux de mise à jour qui prévient l'utilisateur d'une nouvelle version au lieu de recharger par surprise.
5. Le code d'enregistrement du service worker et l'alternative avec Workbox si elle convient mieux à {{stack}}.
6. Les limites connues sur iOS et Safari à vérifier, en précisant qu'il faut les contrôler dans la documentation actuelle.
7. Comment tester : panneau Application des DevTools, simulation hors ligne, audit d'installabilité et cas de test concrets.

Contraintes :
- Le site doit être servi en HTTPS ; rappelle-le si l'hébergement ne le garantit pas.
- Ne mets pas en cache des réponses contenant des données personnelles ou de session.
- N'ajoute ni notifications push ni synchronisation en arrière-plan sauf si mes priorités le demandent.
- Marque avec [À COMPLÉTER] les couleurs, noms et icônes que je ne t'ai pas fournis.

Format : tableau des stratégies, un bloc de code par fichier avec son chemin et une liste de tests.

Comment l'utiliser

  1. Décris le site, les parties qui doivent marcher hors ligne et l’hébergement. 2. Ajoute les fichiers, déploie sur un environnement de test en HTTPS et vérifie le panneau Application des DevTools. 3. Sur un vrai téléphone, teste l’installation, le mode avion et l’arrivée d’une nouvelle version.

Exemple d'utilisation

Site : site de recettes avec recherche et fiches recettes · Stack : site statique généré avec Astro sur Netlify · Hors ligne : lire les recettes déjà consultées · Priorités : installable sur Android et chargement rapide.

Exemple de résultat

Stratégies de cache

RessourceStratégie
Shell (accueil, page hors ligne, manifest)Précache à l'install
Pages de recettes (HTML)Réseau d'abord ; en cas d'échec, cache puis /hors-ligne/
CSS, JS, imagesStale-while-revalidate

public/sw.js

const VERSION = 'v1';
const SHELL = `shell-${VERSION}`;
const PAGES = `pages-${VERSION}`;
const RESSOURCES = `ressources-${VERSION}`;
const PRECACHE = ['/', '/hors-ligne/', '/manifest.webmanifest']; // [À COMPLÉTER : CSS/JS hachés d'Astro]

self.addEventListener('install', (event) => {
  event.waitUntil(caches.open(SHELL).then((cache) => cache.addAll(PRECACHE)));
});

self.addEventListener('activate', (event) => {
  const actuels = [SHELL, PAGES, RESSOURCES];
  event.waitUntil(caches.keys().then((cles) =>
    Promise.all(cles.filter((c) => !actuels.includes(c)).map((c) => caches.delete(c)))));
});

const stocker = (nom, request, res) => {
  if (res.ok) { const copie = res.clone(); caches.open(nom).then((c) => c.put(request, copie)); }
  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) => stocker(PAGES, request, res))
      .catch(async () => (await caches.match(request)) ?? caches.match('/hors-ligne/')));
    return;
  }
  event.respondWith(caches.match(request).then((enCache) => {
    const reseau = fetch(request).then((res) => stocker(RESSOURCES, request, res)).catch(() => enCache);
    return enCache ?? reseau;
  }));
});

En changeant VERSION, l'événement activate supprime les anciens caches. Netlify sert toujours en HTTPS, condition indispensable pour un service worker…

Informations clés

Catégorie
Programmation et développement · Créer des sites web
Type de résultat
Code
Niveau
Intermédiaire
Conçu pour
ChatGPT, Claude, Gemini et Microsoft Copilot
Vérifié sur
En attente de vérification éditoriale
Variables
Site ou application, Stack et hébergement, Fonctionnement hors ligne et Priorités
Langue
Français
Prix
Gratuit, sans inscription
Mis à jour
07/11/2026

Questions fréquentes

Que faut-il pour qu’un site soit installable en PWA ?

Au minimum, être servi en HTTPS et disposer d’un manifest avec nom, icônes et start_url. Chaque navigateur a ses propres critères ; un service worker avec réponse hors ligne améliore l’expérience et certains navigateurs en tiennent compte.

Pourquoi ne pas recharger automatiquement la page lors d’une mise à jour du service worker ?

Parce que l’utilisateur peut perdre ce qu’il faisait, comme un formulaire à moitié rempli. Mieux vaut l’informer qu’une nouvelle version est prête et le laisser choisir quand recharger.

Qu’est-ce que stale-while-revalidate ?

Une stratégie qui sert immédiatement la copie en cache tout en récupérant la version récente sur le réseau pour la visite suivante. Elle est rapide et garde le contenu raisonnablement à jour.

À quoi sert ce prompt ?

Transformez un site existant en Progressive Web App : manifest avec icônes, service worker avec stratégies de cache par ressource, page hors ligne, mises à jour sûres et tests.

Avec quels outils d'IA fonctionne-t-il ?

Il est conçu pour ChatGPT, Claude, Gemini et Microsoft Copilot. Nous ne l'avons pas encore vérifié sur ces outils ; les résultats peuvent donc varier de l'un à l'autre.

Comment personnaliser le prompt ?

Cliquez sur « Personnaliser » et remplissez les variables (Site ou application, Stack et hébergement, Fonctionnement hors ligne et Priorités). Le texte se met à jour instantanément et vous pouvez ensuite le copier en un clic. Les valeurs sont stockées uniquement dans votre navigateur.

Faut-il de l'expérience pour l'utiliser ?

Il est de niveau intermédiaire : il vaut mieux connaître le sujet pour fournir un bon contexte et relire le résultat d'un œil critique.

Ce prompt est-il gratuit ?

Oui. Tous les prompts de HomeCasa Prompts sont gratuits, sans inscription ni abonnement. Vous pouvez aussi les utiliser dans des projets professionnels.

Puis-je me fier au résultat de l'IA ?

Considérez-le comme un brouillon de qualité : vérifiez toujours les données, les chiffres et les affirmations importantes avant de publier ou de prendre des décisions.

Prompts similaires