Was ist besser: HTML-Rendering auf dem Server oder auf dem Client in JS?

8

Ich habe eine Best Practices / Performance-Frage. Ich erstelle ein ASP.NET MVC 2-Projekt, und ich habe mehrere Teile der Seite, auf die entweder beim Laden oder bei der Benutzerinteraktion dynamisch zugegriffen wird.

Meine Frage ist: Ist es besser, wenn die Abschnitte in HTML auf dem Server gerendert werden und dann nur die Abschnitte von HTML ersetzen oder ist es besser, die Informationen einfach als JSON-Objekte abzurufen und dann mit JS zu erstellen und einzufügen HTML?

Es sollte angemerkt werden, dass die Objekte der Bedenken sehr einfach sind. Ein Beispiel wäre ein "Nachrichten" -Objekt, das ein ID-Feld, ein To-Feld, ein Von-Feld, ein Subjekt-Feld und ein Body-Feld, die alle Zeichenfolgen sind, aufweist.

Gibt es für beide Ansätze einige ernsthafte Vor- oder Nachteile? Oder ist dies ein Fall von Präferenz für den Aufbau Ihrer Anwendung?

    
Dave 03.12.2010, 19:11
quelle

4 Antworten

1

Ich denke nicht, dass beide besser sind; Es hängt von Ihren Anforderungen ab. Die Frage ist grenzwertig nicht zu beantworten. Verwenden Sie die Daten auf dem Client für weitere Berechnungen oder Manipulationen oder plumpsen Sie einfach etwas aus, um angezeigt zu werden?

In beiden Fällen geben Sie Textdaten aus, obwohl es einfacher ist, Datenstrukturen als JSON direkter darzustellen, als Datenstrukturen in HTML umzuwandeln, und HTML direkt besser darzustellen als JSON.

    
Jonathon Faust 03.12.2010, 19:35
quelle
2

Betrachten Sie die folgenden Fragen:

  1. Wird es einen Vorteil haben, die Rohdaten auf dem Client zu haben? In einigen Fällen verwenden andere Teile der Seite die Daten. In diesen Fällen kann es sinnvoller sein, Daten über die Leitung zu senden.

  2. Gibt es potenzielle Leistungsunterschiede? Betrachten Sie die gesamte Pipeline. Das Senden von HTML kann ausführlich sein, wird aber schneller auf dem Server gerendert? Kann der gerenderte HTML-Code auf dem Server zwischengespeichert werden?

Wenn keiner von ihnen dich in die eine oder andere Richtung drängt, dann wähle ich die haltbarere Code-Basis. Dies hängt nicht nur von dem spezifischen Problem, sondern auch von den Fähigkeiten des Teams ab.

Bob

    
rcravens 04.12.2010 03:04
quelle
1

Viele Frameworks haben relativ langsame Render-Bibliotheken (der View-Teil der Model-View-Controller-Architektur). Der Grund dafür ist, dass die Render-Bibliothek eine View-domänenspezifische Sprache parsen / ausführen muss, um Variablen usw. zu ersetzen. p>

Abhängig von der Skalierung Ihrer App kann es viel schneller sein, dass der Browser des Clients das Rendern ausführt. Es kann jedoch schwierig sein, die View-Berechnung auf den Client zu übertragen.

Der Closure-Compiler von Google enthält eine Vorlagenbibliothek. Eine andere Option ist flüssig. Es hat ein Javascript , . Net und Ruby Implementierung.

    
Larry K 03.12.2010 20:53
quelle
0

Wie Jonathon schon gesagt hat, glaube ich nicht, dass es eine einfache Ja / Nein-Antwort auf Ihre Frage gibt.

Der einzige Faktor, der noch nicht erwähnt wurde, ist, dass die serverseitige Ausführung vorhersehbarer ist, während die clientseitige Ausführung außerhalb Ihrer Kontrolle liegt und je nach Browser variieren kann. Dies kann praktisch kein Faktor auf einer Intranet-Website sein, kann aber wichtig werden, wenn das Publikum vielfältig ist. Moderne Javascript-Bibliotheken schirmen uns normalerweise (nicht immer) vor den Quirren des Browsers ab, aber ältere Browser können auch spezielle Leistungsprobleme haben (die Leistung sollte jedoch nicht dein Hauptkriterium sein, es sei denn du versuchst es und es ist schrecklich).

Wenn Sie die Lösung auswählen, die Sie am bequemsten implementieren können, ist dies möglicherweise der richtige Weg.

    
lampyridae 03.12.2010 20:24
quelle