2016-04-10 9 views
1

Wenn ich mich entscheide, einen DRY-Ansatz zu verwenden und mein Routing dynamisch einzurichten, wenn eine Route mehrere verschiedene Aufgaben bewältigen kann, kann dies zu Latenzproblemen führen.Performance-/Latenzdifferenzen - dynamische vs statische Routen in Node.js

Dies ist mein erstes Node.js-Projekt und ich benutze es nur als Backend, um Anfragen mit einer RESTful-Architektur zu behandeln, wobei einige Daten, die der Endbenutzer anfordert, ziemlich groß sein können.

Gibt es Leistungsunterschiede bei der Entscheidung, ob dynamische oder statische Routen in node.js verwendet werden sollen? Ich habe etwa 10 verschiedene Ressourcen erhältlich bei dort bestimmte Route

app.get('/resource1', .... 
app.get('/resource2', .... 
app.get('/resource3', .... 
app.get('/resource4', .... 
.... 

etwa die Hälfte haben params oder irgendeine Art von Abfrage übergeben. Ich aktualisiere es konfiguriert, damit es dynamisch gesetzt wird, dann habe ich Sortierlogik, dann handle ich die Anfrage so.

app.get('/:resource* ', .... 

[sorting logic for every case] 

[handle request] 

Ich gehe davon aus, dass dies zu einer höheren Latenz führen wird. Was sind die Kompromisse und Best Practice in diesem Fall?

+0

Schreiben Sie Code, um die klarste und einfachste Art und Weise möglich. Der Unterschied zwischen Ihren Szenarien ist vernachlässigbar und nicht zu optimieren. Wenn Sie auf diese Ebene (die es keinen Grund gibt) zu optimieren, dann geben Sie mit einem beliebigen Framework auf und schreiben Sie selbst einen nativen http-Handler. – jfriend00

+0

Danke für die Eingabe Ich entdeckte auch das Async-Modul – garrettmac

+0

Ich sehe nicht, was das Async-Modul mit Route Parsing zu tun hat. Das Parsen Ihrer Route würde vermutlich alle synchron sein, also keinen Sinn darin, die Async-Bibliothek dafür zu verwenden. – jfriend00

Antwort

1

Die meisten Routenbearbeitungslogik würde nur wenig Zeit in Anspruch nehmen, die Sie nicht ermitteln könnten. Trotzdem ist es am besten, es so zu schreiben, wie es am klarsten ist, also statische Routen, wo sie sinnvoll sind. Die Netzwerklatenz wirkt sich viel stärker auf die Verarbeitung aus, als nur eine kleine Verarbeitungsmenge, um Routen zu sortieren.

Siehe folgende und nützliche Links aus der es für Informationen über Leistung und Latenz: https://gist.github.com/jboner/2841832

+0

Danke, das war hilfreich, da ich noch nie in der "echten Welt" gearbeitet habe und mein Projekt zum ersten Mal von jemandem in der "echten Welt" rezensiert wird und ich möchte, dass es so professionell wie möglich ist unwissentlich einige "unprofessionelle" Gewohnheiten entwickelt – garrettmac