2009-03-10 7 views
1

J'ai une grille avec plusieurs milliers de lignes qui peuvent être filtrées et triées. Sur chaque ligne, vous pouvez cliquer sur un bouton de détails, qui vous apportera une nouvelle page avec des informations détaillées sur la page. Parce que c'est un bouton, vous ne pouvez pas cliquer sur le bouton droit ou un clic droit et ouvrir dans un nouvel onglet. En outre, lorsque vous revenez, vous perdez vos filtres et vos résultats de recherche.Question d'architecture impliquant un état de recherche et de session

Pour résoudre ce problème, j'ai considéré ce qui suit: Basculez les boutons sur des liens, et lors du filtrage et de la recherche, utilisez get à la place des requêtes post. De cette façon, vous pouvez passer à de nouvelles pages avec un clic droit ou un clic du milieu, et si vous avez suivi un lien normalement, retour fonctionnerait correctement.

Cette modification n'a toutefois pas été effectuée. On nous a demandé d'ajouter un ensemble de boutons 'résultat suivant/résultat précédent' sur la page des détails, ce qui vous permettrait de naviguer. Bien que n'étant pas une solution élégante, cela fonctionnerait au moins.

J'ai proposé d'ajouter des paramètres de chaîne de requête à la page de détails, ce qui régénérerait la requête de recherche en fonction du filtre et vous permettrait d'obtenir les résultats suivants et précédents dans le code.

Un membre de l'équipe a contesté cette solution. Il estime que c'est une perte de ressources serveur de re-interroger la base de données. Au lieu de cela, une solution a été proposée pour ajouter une variable de session incluant une liste de résultats. Vous pourriez alors l'utiliser pour naviguer. Je ne suis pas d'accord avec cela parce que vous ne pouvez pas avoir plusieurs onglets ouverts sans casser la navigation, et les nouveaux résultats ne sont pas ajoutés à la liste en temps réel. De plus, si vous vous inquiétez de l'optimisation, la session serait la dernière chose à utiliser car elle consomme de la mémoire et empêche la réplication du serveur ... sauf si vous stockez les résultats dans la base de données.

Quelle est la meilleure solution?

Répondre

2

La session ne semble pas être un gagnant, elle ne sera pas mise à l'échelle avec beaucoup d'utilisateurs.

Frapper la base de données à plusieurs reprises semble inutile, mais cela dépend du coût - combien d'utilisateurs, à quelle fréquence vont-ils actualiser/filtrer et quel est le coût de cette requête?

Si vous utilisez des chaînes query, vous pouvez mettre en cache les pages par paramètre.

Qu'en est-il du code AJAX sur ce bouton pour récupérer les détails - laissez la grille sous-jacente en place et affichez les détails dans un div/panneau ou une nouvelle fenêtre/onglet.

Questions connexes