4 Stimmen

Serverseitige oder clientseitige Verarbeitung?

Ich habe eine Vergleichswebsite entwickelt, um jedes Produkt zu vergleichen, das online in Indien verkauft wird. Derzeit ist die Website vollständig clientseitig :-

  1. Nimmt Benutzereingaben entgegen.
  2. Macht 20-30 AJAX-Anforderungen und ruft Ergebnisse von allen großen Online-Shops ab.
  3. Verwendet etwas clientseitiges Scripting, um die Ergebnisse zu sortieren und sie auf die geeignetste Weise anzuzeigen.

Nachteile :-

  1. Mein clientside-Code ist für jeden verfügbar. Es ist Javascript.
  2. Anfälliger für Browserfehler.
  3. Nicht robust.

Nachteile nach der Umstellung auf serverseitig:-

  1. Aufgrund des Traffics meiner Website wird die Serverlast zunehmen, da er länger mit einem Client beschäftigt sein wird.
  2. Das Abrufen von Werten von verschiedenen Websites kann bis zu 10s dauern (maximal). Der Server ist für diese Zeit beschäftigt. Berücksichtigen Sie die Last, wenn ich zu Spitzenzeiten 500 Besucher/Min habe.

Vorteile :-

  1. Meine Codes sind sicher und geschützt.
  2. Die Verarbeitung auf der Client-Seite wird minimal sein. Es wird auch auf Mobilgeräten und anderen Geräten problemlos funktionieren.

Ich möchte über diese Probleme nachdenken, bevor ich sie tatsächlich umsetze. Kann mir jemand vorschlagen, was ich für meine Website wählen sollte? Welcher Ansatz wird für mich besser sein?

Bitte kommentieren Sie, wenn meine Frage unklar ist.

3voto

Zunächst einmal ist das eine sehr gute Frage.

Es hängt vollständig vom Volumen und den Transaktionen ab, die Ihre Seite verarbeitet, und wenn Sie wirklich möchten, dass Ihre Anwendung skaliert, wünsche ich Ihnen viel Erfolg! und machen Sie es von Anfang an richtig.

Hören Sie auf, Ihre Geschäftslogik auf der Client-Seite zu platzieren ** erwarten Sie nicht, dass der Endbenutzer Netzwerkbandbreite verbraucht, wenn er einen Vergleichsaufruf tätigt :) und erwarten Sie nicht, dass er über die beste Bandbreite verfügt.

Balancer Ihre Server-Farm stellen Sie sicher, dass Ihre Server-Farm ordnungsgemäß ausbalanciert ist und der Vergleich mit mehreren Threads anstelle eines einzelnen Threads durchgeführt wird

Cache-Ergebnisse ** Wenn Sie dies auf der Serverseite durchführen, können Sie bei einem Vergleich von Benutzer a und Benutzer b dieselben Ergebnisse aus dem Cache für Benutzer b abrufen, anstatt diese Anfragen erneut zu stellen.

Benutzerfreundlichkeit zeigen Sie dem Benutzer den Fortschritt des Vergleichs anstatt eines Lade-Spinning-Bildes :)

Ich hoffe, es hat Ihnen geholfen

1voto

alexandernst Punkte 13161

Ich kann nicht sehen, warum du die "Anfälliger für Browserfehler" annimmst. Javascript wird genau so laufen, wie du es möchtest, wenn du dem Browser die richtigen Bibliotheken/Code sendest.

Du kannst sehen, welcher Browser die Anfrage stellt, und ihm das richtige Stück Code senden (zu verstehen als: Wenn du Code hast, der in FF & Opera funktioniert, aber nicht in IE, schreibe zwei Versionen dieses Codes, eine für jede Browsergruppe). Es gibt einige Bibliotheken, die dir dabei helfen können.

Außerdem sollte ein Vergleich nicht auf der Serverseite durchgeführt werden. Also, wenn du viel Traffic auf deiner Website hast, sollte die Arbeit auf der Clientseite für solche Dinge ausreichen.

Hinsichtlich des Codeschutzes hast du recht. Auf der Serverseite kann niemand deinen Code lesen. Also musst du entscheiden, ob die Serverlast wichtiger ist als Menschen, die deinen Code lesen.

Denke auch daran, dass du deinen Code obfuskieren kannst. Ich weiß, das ist nicht die beste Lösung, aber es wird viele Leute davon abhalten, ihn zu lesen.

EDIT:

Wenn du es auf der Serverseite machst, funktionieren die Dinge wie erwartet auf allen Geräten (wie du bereits gesagt hast). Aber es gibt einige Dinge, die du tun musst, um die Serverlast davon abzuhalten, auf 100% zu steigen.

Chandra Sekhar Walajap hat dir bereits über den Vorteil des Verwendens einer Art Cache für die Ergebnisse erzählt. Ich persönlich würde einen Schritt weiter gehen, da du all diese Seiten nur durchsuchst.

Ich würde einen Crawler erstellen, der beispielsweise alle 24 Stunden läuft und jedes Produkt abruft/durchsucht. Dann würde ich all diese Produkte irgendwohin speichern (zu verstehen als in einer Datenbank oder wo auch immer du möchtest). Auf diese Weise, wenn ein Benutzer eine Anfrage für einen Vergleich zwischen den Produkten A und B stellt, musst du nicht alle Seiten abrufen/durchsuchen, sondern nur an der Stelle nach diesen Produkten suchen, wo du sie gespeichert hast, und sie dem Benutzer anzeigen.

Beachte, dass dies eine Menge Bandbreite spart, nur wenn du viele Benutzer hast, die viele Produkte vergleichen.

Andererseits, wenn nur wenige Benutzer nach nur wenigen Produkten suchen, wird dir diese Art von Lösung überhaupt nicht nutzen, weil du weißt, alles von allen Seiten alle 24 Stunden abzurufen, ist viel Nutzung, sowohl in der CPU als auch in der Bandbreite.

Hinsichtlich der Serverlast: Ich kann es nicht sagen. Es hängt von so vielen Dingen ab, dass es fast unmöglich ist zu sagen. Du musst berücksichtigen, wie groß die Website ist, die du durchsuchst, wie viele Produkte es auf jeder Website gibt. Welche Hardware verwendest du? Am besten machst du ein einfaches Beispiel mit cURL und rufst alles von einer der Websites ab. Dann siehst du, wie sich das auf die Leistung auswirkt, und entscheidest.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X