Frage

Ich suche in Situationen, in Datenbank-orientierte Web-Anwendungen, wenn man auf Client-Seite Sortierung von Tabellen über das Sortieren auf der Serverseite verlassen soll. Eine besondere Situation, die mich nervt ist Paginierung.

Wenn Sie eine große Tabelle Paginieren versuchen, (sagen 10000 Zeilen) sowie sortieren sie nach einer bestimmten Spalte, was der beste Ansatz wäre zu nehmen?

Ich verstehe, dass einige Probleme im Zusammenhang mit dieser sind:

  • Ich kann nicht die gesamte Tabelle auf der Client-Seite in einem Rutsch zurückkehren
  • Ich kann nicht sortieren, so viele wie 10.000 Datensätze mit Javascript
  • die Tabelle sortiert wird beinhalten Zeilen auf allen Seiten Sortierung, nicht nur die aktuelle Seite.

So haben Sie noch mehr Fragen zu dieser Liste hinzufügen?

Welcher Ansatz für eine gute Mischung von Client-Seite und Server-Seite Interaktion führen würde, so dass Serverbelastung minimiert wird?


ADDITION:

Okay, in der Datenbank Sortierung und Rückführen der reqd Seite eine Seite zurück und eine nächste Seite scheint die beste Wette.

Nun bedenken Sie:

Der Benutzer ist auf der Seite (3 von 10) der Tabelle nach Seriennummer sortiert. Nun klickt der Benutzer auf dem Header namens „username“, wollte die Tabelle nach Usernamen sortieren.

quesion: Sollte das Endergebnis sein „Seite (1 von 10) nach Username sortiert“ oder sollte es „Seite (3 von 10) sortiert nach Username“ sein

Ich weiß, dass dies eine sehr subjektive Frage, aber was würden Sie empfehlen und warum?

War es hilfreich?

Lösung

Die Client-Seite wird gehalten am besten einfach: Javascript Sortieranlagen / Paging ist nur für sehr kleine Ergebnismengen - klein genug, dass ein Benutzer keine Leistungseinbußen feststellen

.

Die Server-Seite ist, wo Sie die Serverlast optimieren können:

Laden für mehr Seiten, eine große Anzahl von Zeilen / Spalten pro Seite und häufige Anfragen für den Rückgriff in Form von häufigen Anfragen kommen. (Wir haben nicht einmal über Filterung gesprochen)

So je nach Benutzer und tatsächliche Nutzung , können Sie irgendeine Form von Caching benötigen. Beachten Sie, sind diese Vorschläge für eine Zeit, nachdem Sie wissen, was Ihre Benutzer tun:

  • Für häufige Seitenanforderungen, betrachten einige Ajax-Anfragen die nächsten (und frühere) Seiten mit Vorspannung, tauschen dann in den Zeilen (via Javascript) in der Tabelle auf Benutzeranforderung.

  • Für große Seitengrößen berücksichtigen, die Zeilen in einer „most recently used“ -Anwendung (Speicher) Cache zu halten, so dass die Datenbank nicht erforderlich ist, die gleichen großen Datenmengen über auszuspucken und immer wieder .

  • Für häufige Umsortierung, ein guter Ansatz ist es, die Ergebnisse mit nur in SQL eine Cache-Tabelle zu halten.

Und immer, immer, immer Index der Datenbank entsprechend.


Zusätzliche Antwort:

Meine sehr subjektive Antwort ist diese: Der Benutzer (me) will von einer beliebigen Seite sortieren. Lassen Sie sie (mir). Es gibt nichts ärgerlicher, als zu sein, wo Sie sein wollen, und mit einer Anwendung, die Sie zurück an den Anfang der Liste werfen.

Eine weitere Überlegung ist es, mehrere Ebenen der Sortierung: Haben Sie durch die Seriennummer implementieren möchten sortieren, dann Benutzername? Überlegen Sie, was Microsoft Excel tut, oder jede andere Anwendung, die Ihren Benutzern vertraut sind. Ihre Benutzer werden wahrscheinlich in Ordnung sein mit dem, was sie gewohnt sind -. Einschließlich geworfen zurück zu Seite 1

Andere Tipps

Datenbanken sind echte Tiere bei Sortierung und Auswahl von Daten. So Ihre beste Wette ist auf jeden Fall den Client mit dem Server sagen müssen: „Ich Seite X will mit Y Zeilen von Z. sortierten“ Dann funktioniert die Datenbank seine Sache, und der Client zeigt das Ergebnis. Zur Verbesserung der Leistung können Sie Ihre Client-Cache-Ergebnisse machen, und darüber hinaus können Sie Ihre Code-Abfrage wurden machen die nächsten und vorherige Seiten nach dem aktuellen geholt, so dass sie sofort auf Anfrage angezeigt werden können.

Der beste Ansatz wäre die Sortierung und Paging auf Datenbankebene zu tun und nur eine Teilmenge der ursprünglichen Daten zurück, die nur auf dem Bildschirm angezeigt wird. Kein Javascript in diesem Szenario.

Wenn aus irgendwelchen Gründen können Sie nicht auf Datenbankebene sortieren und Seite, dann sollten Sie es tun mit einem serverseitigen Skript. Kein Javascript entweder in diesem Szenario.

Und das Schlimmste Ansatz wäre die Sortierung und Paging mit Javascript zu tun, was natürlich überhaupt nicht aus offensichtlichen Gründen empfohlen.

Haben Sie die db sortieren, was auf die jeweilige Seite auf dem Bildschirm geliefert wird. Es wird fast immer schneller, zwischengespeichert werden und erleichtern eine solche Last auf dem Browser.

Wenn Sie möchten, haben damit die Client-Seite weitere Unter Sortierung über Javascript, etc, wenn die Daten detailliert genug ist und davon profitieren könnten. Sie möchten speichern, welche Untersortierfunktionen sind so ausgewählt, dass sie zwischen Seiten in Erinnerung sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top