Test lecture/écriture stockage
Benchmark gratuit pour mesurer la vitesse d'écriture/lecture via IndexedDB et localStorage. Obtenez le débit MB/s, les opérations par seconde et la latence des systèmes de stockage navigateur.
| Test | Vitesse | Latence | Statut |
|---|---|---|---|
| Écriture IndexedDB 1 000 éléments de 1 Ko | - | - | En attente |
| Lecture IndexedDB Lecture de 1 000 éléments | - | - | En attente |
| Écriture localStorage 100 éléments stockés | - | - | En attente |
| Lecture localStorage Lecture de 100 éléments | - | - | En attente |
| Fichier volumineux Lecture/écriture de 10 Mo | - | - | En attente |
Test lecture/écriture - Évaluez les performances disque
Outil Web pour mesurer la rapidité du stockage navigateur (IndexedDB + localStorage). Les tests couvrent l'écriture, la lecture et la gestion de fichiers volumineux afin d'évaluer la rapidité de vos applis web.
Comment fonctionne le test de vitesse stockage ?
Le test mesure les performances de stockage navigateur en exécutant des opérations de lecture et d'écriture :
1. Écriture IndexedDB : test d'écriture de 1 000 éléments (1 Ko chacun)
2. Lecture IndexedDB : mesure de la lecture de 1 000 éléments
3. Écriture localStorage : test d'écriture de 100 éléments
4. Lecture localStorage : mesure de la lecture de 100 éléments
5. Fichier volumineux : test lecture/écriture d'un Blob de 10 Mo
Chaque test calcule le débit (MB/s) et la latence (ms par opération). Plus de MB/s et moins de latence = meilleures performances.
IndexedDB vs localStorage ?
IndexedDB et localStorage sont des systèmes de stockage navigateur aux caractéristiques différentes :
localStorage :
- Stockage clé/valeur simple
- API synchrone (bloque le thread principal)
- Limité à ~5-10 Mo par origine
- Ne stocke que des chaînes (objets via JSON.stringify)
- Idéal pour de petits états d'interface
IndexedDB :
- Base de données complète avec index et curseurs
- API asynchrone (non bloquante)
- Quota bien plus grand (souvent en gigaoctets)
- Stocke des clones structurés (objets, Blobs, ArrayBuffers)
- Idéal pour gros volumes et apps offline
Le benchmark mesure les deux pour comparer leur coût réel sur votre appareil.
Quels facteurs influencent la vitesse ?
Plusieurs facteurs influencent les performances de stockage navigateur :
- Type de disque : SSD >> HDD
- Interface : NVMe > SATA SSD > eMMC > HDD
- Espace disponible : disques remplis à plus de 80 % ralentissent (TRIM et over-provisioning se réduisent)
- Moteur du navigateur : Chromium utilise IndexedDB sur LevelDB ; Firefox utilise SQLite
- Système d'exploitation : journalisation, comportement de fsync et taille du page cache comptent
- Processus en arrière-plan : antivirus ou sauvegarde I/O concurrente ralentit lectures/écritures
- RAM : plus de RAM libre = meilleur cache de pages OS
Pour des résultats fiables, fermez les autres applications et gardez de l'espace disque libre.
Qu'est-ce qu'un bon score de vitesse de stockage ?
Lecture des résultats :
Vitesses typiques par type :
- SSD NVMe : 50-200+ MB/s navigateur (3-7 Go/s natif)
- SSD SATA : 20-100 MB/s navigateur (550 Mo/s natif)
- HDD rapide (7200 tr/min) : 5-20 MB/s
- HDD lent (5400 tr/min) : 2-10 MB/s
- eMMC/UFS mobile : 10-50 MB/s
Note : la surcouche navigateur et les frontières JavaScript rendent ces débits 10 à 100 fois plus lents que l'I/O disque natif. Une latence < 1 ms est aussi essentielle pour une UI réactive.

Pourquoi tester le stockage navigateur ?
Le test du stockage navigateur est précieux car :
- Performance Web App : montre la rapidité de stockage/lecture des web apps
- PWA : critique pour les apps utilisables hors-ligne
- Cache du navigateur : impacte le temps de chargement et le Service Worker
- Débogage : identifie les goulots avant que les utilisateurs se plaignent
- Comparaison : benchmark navigateurs et appareils côte à côte
Ce test reflète la performance réelle de toute web app reposant sur les API de stockage navigateur.
Pourquoi mes écritures IndexedDB sont-elles plus lentes que les lectures ?
Les écritures IndexedDB sont typiquement 2 à 10 fois plus lentes que les lectures car chaque écriture doit :
1. Acquérir un verrou exclusif sur l'object store (les lectures readonly utilisent un verrou partagé)
2. Mettre à jour les index secondaires définis (chaque index = écriture B-tree supplémentaire)
3. Ajouter au write-ahead log pour la durabilité
4. Vider sur disque au commit de la transaction (fsync)
Les lectures, en revanche, tapent souvent dans le page cache de l'OS et reviennent sans toucher au disque. Pour accélérer les écritures : regroupez plusieurs put dans une seule transaction (les commits amortissent les fsync), évitez les index inutiles et utilisez put() avec des clés explicites au lieu d'autoIncrement.
Quel est le quota de stockage du navigateur et que se passe-t-il quand on l'atteint ?
Les navigateurs modernes attribuent à chaque origine un quota basé sur l'espace libre et la politique de stockage. Limites typiques :
- Chrome/Edge : jusqu'à 60 % du disque libre par origine
- Firefox : jusqu'à 50 % du disque libre (quota de groupe)
- Safari : 1 Go sans demande, puis permission utilisateur requise
Consultez votre limite réelle avec navigator.storage.estimate() qui renvoie {quota, usage} en octets. En cas de dépassement, les transactions IndexedDB sont annulées avec QuotaExceededError et localStorage lève une exception au setItem(). Le stockage persistant via navigator.storage.persist() empêche le navigateur d'éviter vos données sous pression disque.
Pourquoi le test 10 Mo échoue-t-il parfois sur mobile ?
Les navigateurs mobiles imposent plusieurs limites qui peuvent casser le test du Blob de 10 Mo :
1. Taille de chaîne : la stringification d'un Blob 10 Mo pour localStorage double à 20 Mo UTF-16 ; Safari iOS refuse les chaînes au-delà de 16 Mo.
2. Pression sur le heap : le heap de Chrome mobile est de 256-512 Mo ; allouer le Blob plus le copier pour IndexedDB peut provoquer un OOM de l'onglet.
3. Quota d'origine : les Android d'entrée de gamme avec 8 Go internes n'accordent parfois que 100-500 Mo par origine.
4. Éviction en arrière-plan : si vous changez d'application en plein test, iOS peut éliminer l'onglet et la transaction est silencieusement annulée.
Pour des tests fiables sur mobile, libérez au moins 2 Go et gardez le navigateur au premier plan.
Fonctionnalités
- 5 tests de stockage complémentaires
- Benchmark lecture/écriture IndexedDB
- Tests localStorage
- Gestion de fichier 10 Mo
- Mesures MB/s et latence ms
- Affichage du quota et de l'utilisation
- Calcul des vitesses moyennes
- Progression visuelle
- Arrêt et nettoyage automatiques
- 100 % local, compatible hors ligne
- Support mobile et desktop
- Mode sombre
