2009-01-02 23 views
37

Was ist am besten für die Seitenumbruch? Serverseitig oder dynamisch mit JavaScript?Paginierung: Serverseite oder Clientseite?

Ich arbeite an einem Projekt, das schwer auf dem Ajax ist und Daten dynamisch einzieht, also habe ich an einem JavaScript-Paginierungssystem gearbeitet, das das dom verwendet - aber ich fange an zu denken, dass es besser wäre um alles serverseitig zu handhaben.

Was sind die Gedanken aller?

Antwort

58

Die richtige Antwort hängt von Ihren Prioritäten und der Größe des zu paginierenden Datensatzes ab.

Server-Seite Paginierung ist am besten für:

  • Große Daten für diejenigen
  • Schneller Anfangsseite Last
  • Barrierefreiheit gesetzt kein Javascript läuft

Client-Seite Paginierung ist am besten für:

  • Kleine Datensatz
  • Faster weitere Seite lädt

Wenn Sie also in erster Linie kosmetischen Gründen sind Paginieren, macht es mehr Sinn, es Client-Seite zu handhaben. Und wenn Sie paginieren, um die anfängliche Ladezeit zu reduzieren, ist die Serverseite die offensichtliche Wahl.

Natürlich verringert sich der Vorteil der Client-Seite bei nachfolgenden Ladezeiten der Seite, wenn Sie Ajax verwenden, um nachfolgende Seiten zu laden.

7

Wenn Sie dies auf der Clientseite tun, lädt Ihr Benutzer zunächst alle Daten herunter, die möglicherweise nicht benötigt werden, und entfernt den Hauptvorteil der Paginierung.

Der beste Weg, dies für eine solche Art von AJAX-Anwendungen zu tun, ist, dass AJAX den Server für die nächste Seite aufruft und die aktuelle Seite mithilfe des clientseitigen Skripts aktualisiert.

+2

Wenn Ladezeiten wichtig sind, empfiehlt es sich, die nächste Seite immer dann vorzuspielen, wenn eine Seite geladen wird. Das würde null Ladezeiten ergeben, wenn jemand nicht sehr schnell um zwei Seiten weiterleitet. – ThiefMaster

3

Serverseite - senden Sie dem Client gerade genügend Inhalt für die aktuelle Ansicht.

5

Wenn Sie große Seiten und eine große Anzahl von Seiten haben, sollten Sie Seiten in Chunks vom Server über AJAX anfordern. Lassen Sie den Server die Paginierung basierend auf Ihrer Anfrage-URL durchführen.

Sie können auch die nächsten Seiten, die der Benutzer wahrscheinlich anzeigen wird, vorab abrufen, damit die Benutzeroberfläche schneller reagiert.

Wenn nur wenige Seiten vorhanden sind, ist es wahrscheinlich die bessere Wahl, sie alle im Voraus zu paginieren und auf dem Client zu paginieren.

3

Auch bei kleinen Datengrößen ist die serverseitige Paginierung die beste Wahl. Sie müssen sich später keine Sorgen machen, wenn Ihre Webanwendung weiter skaliert wird.

Und für größere Datengrößen ist die Antwort offensichtlich.

2

In einer praktischen Welt der Grenzen, würde ich auf der Serverseite, um alle Ressourcen zu sparen, die mit dem Senden der Daten verbunden sind.Außerdem muss sich der Server vor einem böswilligen/fehlerhaften Client schützen, der nach einer RIESIGEN Seite fragt.

Sobald dieser Code glücklich tuckern ist, würde ich "Smart" zum Client hinzufügen, um die "nächste" und "vorherige" Seite zu bekommen und diese im Speicher zu halten. Wenn der Benutzer auf die nächste Seite wechselt, aktualisieren Sie Ihren Cache.

Wenn die Client-Software diese Art von Seiten-Caching durchführt, überlegen Sie, wie schnell Ihre Daten altert (wird sich wahrscheinlich ändern) und ob Sie überprüfen sollten, ob Ihre zwischengespeicherte Datenseite noch gültig ist. Vielleicht kann es erneut angefordert werden, wenn es mehr als 2 Minuten alt wird. Vielleicht haben Sie eine "dreckige" Flagge drin. So ähnlich. Ich hoffe, Sie finden das hilfreich. :)

2

Ich bevorzuge Server Seitenumbruch. Bei der Implementierung müssen Sie jedoch sicherstellen, dass Sie Ihr SQL ordnungsgemäß optimieren. Zum Beispiel glaube ich an MySQL, wenn Sie die LIMIT-Option verwenden, verwendet es nicht den Index, so dass Sie Ihre SQL neu schreiben müssen, um den Index richtig zu verwenden.

G-Man

3

Haben Sie bedeuten, dass Ihr JavaScript, um alle Daten im Speicher hat, und zeigt eine Seite eine Zeit? Oder dass es jede Seite vom Server herunterlädt, wie es benötigt wird, mit AJAX?

Wenn es das letztere ist, müssen Sie vielleicht auch über das Sortieren nachdenken. Wenn Sie mit JavaScript sortieren, können Sie nur eine Seite nach der anderen sortieren, was nicht sehr sinnvoll ist. Ihre Sortierung sollte also auf dem Server erfolgen.

Verwandte Themen