Informatique

BDD Locales & Offline

LocalStorage, IndexedDB et stockage client

Stockage Client : Le Web sans Internet ?

Dans une architecture moderne (Jamstack, PWA, Apps), le navigateur n'est plus un simple lecteur de documents. C'est une base de données à part entière.

Le match du stockage navigateur

Clique sur une technologie : compare sa capacité, sa survie et son mode d'accès.

CAPACITÉ ~5 Mo Onglet fermé la donnée survit-elle ? Navigateur relancé persistance sur le disque ? Synchrone — bloquant Stocke : Chaînes (String)
LS
🎒

LocalStorage

Le "Sac à dos"

  • Simple : Clé-Valeur (String uniquement).
  • Persistant : Reste après fermeture.
  • Bloquant : Synchrone (peut geler l'UI si gros volume).
  • Limité : ~5 Mo max.
localStorage.setItem('theme', 'dark');
const user = JSON.parse(localStorage.getItem('user'));
IDB
🏭

IndexedDB (via Dexie.js)

L'Entrepôt Géant

  • Massif : Stocke objets, fichiers, images (GBs !).
  • Performant : Asynchrone (ne bloque pas l'écran).
  • Complexe : Indexation possible pour recherche rapide.
  • ⚠️ API Native : Horrible. Utilisez Dexie.js.
await db.friends.where('age').above(25).toArray();

Cas d'Usage Réels (Production)

📱

TikTok / Insta (Offline)

Quand tu scrolles dans le métro sans réseau, tu vois les vidéos déjà chargées ?

Service Worker + Cache API + IndexedDB stockent le flux JSON pour affichage immédiat.
🎮

Jeux Web & Assets

Sauvegarder la progression, l'inventaire et les textures d'un jeu.

Mukbang utilise Dexie.js pour tes XP/Badges car c'est rapide et structurellement plus fiable que le LocalStorage.

Jamstack (Netlify)

Un site statique n'a pas de serveur backend pour stocker les sessions.

On stocke le JWT (Token Auth) dans LocalStorage ou Cookie HttpOnly pour garder l'utilisateur connecté via une API (ex: Supabase).
🍎

Le Boss Final : Safari & ITP

Intelligent Tracking Prevention

Apple est très strict sur la vie privée. Sur Safari (iOS/Mac), si un utilisateur n'interagit pas avec ton site pendant 7 jours, tout le stockage local (LocalStorage, IndexedDB, Service Workers) est SUPPRIMÉ AUTOMATIQUEMENT.

🛡️ Solution : Sync Cloud obligatoire (Supabase, Firebase) pour backup.

Cycle de vie d'une donnée locale

Clique sur « Étape suivante » : suis la donnée du setItem() jusqu'à la purge Safari ITP… et son sauvetage.

localStorage Navigateur Cloud Supabase xp : 120 Compteur ITP (sans visite) J0 xp : 120 ! J0 7 jours sans visite (Safari) J+7

terminal://simulator Interactive

Mounting /var/www/html/storage... OK
--- CONTENU DU LOCALSTORAGE ---
> Vide.

1. Hello World

Sauvegarde "Eau" = "10L".

PENDING

2. Hacker Éthique

Essaie d'injecter <script>.

PENDING

3. Clean Up

Vide le stockage.

PENDING
Continuer vers UML & Architecture
⬇️
Bachelor Informatique