Bonjour à tous,
Dans le cadre de la réalisation perso d'une application web de statistiques locales, j'ai testé l'insertion de fichiers "lourds" (plus de 150 Mo) par le biais de JS. L'ensemble des calculs et des représentations sont réalisées par la page (merci Web Workers / Shareds Workers) et seuls les résultats pertinents sont transmis au serveur pour sauvegarde (quelques Mo max).
Après moultes essais, en passant par IndexedDB et localStorage, sur un fichier test (contenu aléatoire de 122 Mo), l'insertion échoue systématiquement. Je ne comprends pas, sous Linux normalement ça fonctionne toujours...![]()
Bref : j'ai bien évidemment augmenté les autorisations de stockage manuellement. Mon navigateur est vierge (en tout cas d'après ce qu'il m'a dit, mais j'ai un doute, je le soupçonne de sortir en cachette) de tout composant parasite, j'ai 4Gg qui lui sont réservés.
Je n'ai pas vraiment "une erreur" manifeste mais un ralentissement global (normal me direz-vous ?) puis un arrêt de l'onglet qui crash. J'ai testé sous Firefox, Chrome, sur deux postes différents (un sous Linux/Ubuntu et l'autre sous W10).
L'objet FileReader me retourne correctement le fichier (et d'ailleurs les 122 Mo ne lui font pas peur dans l'absolu : le dump par console.log me donne un résultat correct et un temps record). Mieux : le transfert vers les Wrokers se fait sans difficulté (une ligne envoyée à chaque fois).
Pour les stockages locaux, j'ai testé soit un enregistrement unique (l'ensemble des lignes sont stockées dans un objet unique puis sérialisées - une mauvaise idée certes, mais une idée quand même) soit un en enregistrement par ligne (davantage dans l'esprit de la finalité de l'outil).
Exemple de fichiers à insérer une fois l'outil terminé : données INSEE par commune, avec une dizaine d'indicateurs (soit 32000 communes x 10 colonnes ou plus, avec plusieurs caractères par colonnes, l'ensemble est sérialisé par ligne en JSON...). Souvent avec des versions temporelles (une année par colonne : un indicateur pour 5 ans = 5 colonnes. Donc une dizaine d'indicateurs sur 5 ans = une cinquantaine de colonnes) -> impossible donc, de faire moins et les résultats combinatoires intermédiaires sont du même ordre.
le fichier de test fait plus de 100.000 lignes, j'en suis rendu à tester un setInterval pour réduire la fréquence des insertions, voir si ce n'est pas la cause du problème... ?!!
Toutes vos idées sur la meilleure manière de faire me serait très utile...
Merci d'avance et bonne journée !![]()
-Nothus-
Partager