2010-07-18 5 views
1

Bonjour J'ai un moteur de recherche, mais dans la mise en page je dois redéfinir le searchterm dans l'url, je veux dire <a href='http://mysite.com/search.php?q=searchTerm&currentPage=2'>Next</a>.Aide avec un éventuel problème de performance (dans une mise en page php)

S'il vous plaît me dire si je suis le faire bien ou il y a une autre façon de le faire

+0

quel problème de performance anticipez-vous exactement? – bobah

+0

Je pensais coz je demande chaque fois que l'utilisateur change la page (cliquez sur le bouton suivant, précédent) – jartaud

Répondre

2

Je ne vois pas le code du côté de PHP donc vous pouvez déjà savoir, mais une chose que je pourrais suggérer dans ce cas:

Assurez-vous d'utiliser une clause LIMIT dans votre requête pour sélectionner uniquement les lignes vous souhaitez afficher et sélectionner explicitement les colonnes que vous souhaitez utiliser. Très probablement, la partie la plus coûteuse de l'ensemble de l'opération va être le composant searchterm, pas le composant de pagination. Sauf si vous avez un volume élevé de termes de recherche identiques, la mise en cache ne vous aidera probablement pas.

+0

Oh! J'ai eu mon point, la question était basée sur le composant searchTerm. – jartaud

1

L'utilisation de $ _GET a pour toutes les raisons & aucun effet sur les performances par rapport à tout autre moyen de le faire. En outre, comme ces URL ne font rien d'autre que récupérer des informations, il est bon (ou en fait, approprié) d'utiliser cette chaîne de requête par rapport à la publication. En d'autres termes: vous le faites correctement autant que je le vois. Pour créer/éditer/supprimer des données, utilisez un avec method = "post", car les données de lecture utilisent généralement un lien (ou un avec method = "get").

3

À moins d'anticiper un trafic extrêmement élevé, cela ne devrait pas poser de problème. C'est la façon standard dont la pagination est faite - si vous trouvez que vous avez des problèmes de performance, reconsidérer la façon dont vous faites les choses alors. Il n'y a aucune raison d'optimiser prématurément. N'invitez pas quelqu'un à venir ici et à citer Knuth, s'il vous plaît!

Une alternative consiste à envoyer plusieurs pages de données au client en même temps, puis à paginer avec Ajax. L'inconvénient est que la première requête prendra un peu plus de temps pour créer et envoyer, utiliser plus de bande passante, et il y a de fortes chances que de nombreux utilisateurs n'iront jamais au-delà de la première page d'une requête donnée.

Si vous cherchez à augmenter l'efficacité ou la performance en général, c'est un sujet assez vaste. Vous pouvez ajouter l'indexation, la mise en cache, explorer d'autres magasins de données, ajouter des serveurs, etc. Vous pourriez dire, exécutez la requête pour obtenir 5 pages à la fois, stockez les résultats dans memcache, et accédez à ceux-ci jusqu'à ce que vous ayez besoin de 5 nouvelles pages.

Cela dépend de ce qui finit par être un goulot d'étranglement. Souvent, c'est quelque chose de différent de ce que vous attendiez, et souvent ce qui fonctionne comme une solution est également inattendu.

+0

Désolé mon pote, novice pose toujours une question comme ça, merci quand même. – jartaud

+0

Bien sûr ... espérons que vous avez indiqué dans la bonne direction. – JAL

1

Bonne chose que vous vous souciez de la performance en premier lieu, mais je suis totalement d'accord avec Alex JL: tout dépend.
Si vous êtes toujours intéressé par la pagination et la performance, j'ai créé quelque chose d'un tutoriel sur la façon d'utiliser javascript avec PHP. Le code peut bien sûr être beaucoup plus agréable et vous devez vous adapter à votre requête de recherche. Quoi qu'il en soit, peut-être que ça aide.
Voir http://www.kwalinux.nl/pagination/849/