2017-08-21 4 views
2

Ok multer prend en charge le stockage de la mémoire, c'est génial.Node Multer mémoire de stockage: comment libérer de la mémoire

  1. mais comment libérer la mémoire après le téléchargement des fichiers pls?

    storage = multer.memoryStorage();

    upload = multer ({stockage: stockage}). Single ('image');

Pour le stockage sur disque, je peux supprimer le fichier dans le dossier dest.

  1. Également ce qui se passe si 2 utilisateurs téléchargent les fichiers avec le même nom de fichier, qu'arrivera-t-il au stockage de la mémoire?

Merci!

Répondre

3
  1. mais comment libérer la mémoire après le téléchargement du fichier?

Dès que vous avez terminé avec la demande, la mémoire sera libérée.

(lorsque le Garbage Collector (GC) nettoie, généralement presque tout de suite)

  1. également ce qui se passe si deux utilisateurs de télécharger les fichiers avec le même nom de fichier , Qu'arrivera-t-il au stockage de la mémoire?

Vous n'avez pas à vous inquiéter car chaque fichier est traité dans sa propre portée, cela signifie, comme je l'ai mentionné ci-dessus, chaque demande est traitée puis, une fois que sa fait la demande est purgée (le long avec le request.file stocké du memoryStorage)

Je vous suggère de vérifier comment multer gère le stockage de la mémoire multer/storage/memory.js (github)

MemoryStorage.prototype._handleFile = function _handleFile (req, file, cb) { 
    file.stream.pipe(concat(function (data) { 
    cb(null, { 
     buffer: data, 
     size: data.length 
    }) 
    })) 
} 

que vous pouvez voir le fichier est tout simplement en train de mettre le rappel (cb), donc il n'y a pas de re global qui férences l'empêcher de vivre dans la mémoire (aucune référence à ce = ne sont plus nécessaires = = ordures GC)


Le memoryStorage est principalement pour le traitement du tampon de fichiers d'une manière temporaire. Exemple: vous voulez recevoir de petits fichiers et les relayer vers un autre serveur qui stocke le média. (multer reçoit les mémoires dans la mémoire temp, relaie et libère la mémoire par elle-même une fois qu'il n'y a plus de référence)