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?
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.
Betrachten Sie die folgenden Fragen:
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.
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
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.
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.
Tags und Links asp.net-mvc javascript html performance