Moyen le plus rapide pour vérifier l'existence d'un fichier dans NodeJs

Je suis en train de construire un super-simple serveur dans le nœud et dans mon surdemande, auditeur, j'essaie de déterminer si je dois servir d'un fichier statique (sur la disquette) ou json (probablement tiré de mongo) basées sur le chemin d'accès dans request.url.

Actuellement, je suis en train de stat d'abord le fichier (parce que j'utilise mtime ailleurs) et si ce n'est pas en panne alors j'ai lu le contenu du disque. Quelque chose comme ceci:

fs.stat(request.url.pathname, function(err, stat) {
    if (!err) {
        fs.readFile(request.url.pathname, function( err, contents) {
            //serve file
        });
    }else {
        //either pull data from mongo or serve 404 error
    }
});

Autres que de cacher le résultat de fs.stat pour la request.url.pathname, est-il quelque chose qui pourrait accélérer ce check up? Par exemple, il serait tout aussi rapide pour voir si fs.readFile erreurs au lieu de les stat? Ou à l'aide de fs.createReadStream au lieu de fs.readFile? Ou pourrais-je éventuellement vérifier le fichier à l'aide de quelque chose dans child_process.spawn? Fondamentalement, je veux juste m'assurer que je ne suis pas de dépenses supplémentaires de temps de déconner w/fileio lorsque la demande doit être envoyée à mongo pour les données...

Merci!

  • J'ai toujours utilisé des stat ou statSync en fonction de mes besoins (par exemple, statSync dans la configuration), mais je suppose qu'il serait techniquement plus rapide à faire readfile et attraper une erreur (si erreur de rattrapage est très lourd en JS, donc j'ai peut-être mal). En général, cependant, je préfère utiliser stat tout simplement parce que c'est plus propre que intentionnellement jeter une erreur. Éviter child_process en général depuis node est de faire un effort sur Windoze systèmes et le code en utilisant il va se casser.
  • L'octet que vous devriez sérieusement accepter la réponse donnée par DeadDEnD...
InformationsquelleAutor Lite Byte | 2012-01-09