Estoy desarrollando una aplicación PWA donde el uso del almacenamiento (para datos fuera de línea) es un factor crucial para el éxito. ¡Después de verificar la información de almacenamiento en las herramientas de depuración, veo que indexedDb consume más de 1 gb ( !!! )!
Fui a investigar más y parece que este almacenamiento se comparte entre todos los entornos de localhost : https://localhost:4173/ , https://localhost:3000/ . El mismo consumo es reportado por ambos sitios.
Seguí adelante e hice clic en el botón " Borrar datos del sitio ", pero solo se borró 1 MB de datos (no hay bases de datos literarias ni cachés ni nada por el estilo para ambos sitios web). Incluso reinicié el navegador.
También ejecuté el analizador del sistema de archivos y pude determinar que, de hecho, estas 2 direcciones son las que consumen el espacio. 522.9mb cada uno
En PWA, los usuarios pueden ver la estimación del consumo de espacio a través de la API navigator.storage :
if ("storage" in navigator && "estimate" in navigator.storage) { return navigator.storage.estimate(); }Entonces, cuando el espacio crece más de, digamos, 100 mg y los usuarios quieren limpiar algo de espacio, debería ser posible borrarlo desde la interfaz de usuario de la aplicación. No, ni siquiera puedo borrarlo manualmente usando las herramientas del navegador. Veo esto como un gran problema tanto para la experiencia del cliente como para la implementación técnica si este espacio no se puede liberar.
Entonces, mi pregunta es: ¿qué tipo de datos hay allí y, lo que es más importante, cómo los borro del javascript ? Porque he hecho la limpieza de los puertos 4173 y 3000 manualmente y nada ha cambiado.
Cualquier consejo o solución es bienvenida. Estoy usando el navegador basado en cromo "Ms Edge v100".
¿Has probado?
let req = indexedDB.deleteDatabase(databaseName); req.onsuccess = function () { console.log("Deleted database successfully"); }; req.onerror = function () { console.log("Couldn't delete database"); }; req.onblocked = function () { console.log("Couldn't delete database due to the operation being blocked");También puede eliminarlo manualmente de esta manera: