Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/12/2010, 07h53   #1
Invité de passage
 
Inscription : février 2006
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 14
Points : 1
Points : 1
Par défaut plugin DataTables, je cherche un moyen pour alléger mes requêtes

Bonjour à tous,

Voilà j'utilise sur mon site un script Data Tables ( ref : http://www.datatables.net/examples/ )

Avec une simple configuration comme ceci :

Code :
1
2
3
4
5
6
$(document).ready(function(){
	$('#liste').dataTable({
		"bProcessing": true,
		"sPaginationType": "full_numbers"
	});
});
Mon problème ou plutôt mon inquiétude est la suivante :

Ayant une liste de + de 10 000 résultats une Data Table met du temps à se charger et j'ai peur qu'une trop grande utilisation de celle-ci par les visiteurs ne ralentisse mon serveur ou ma base MYSQL. Qu'en pensez-vous ?

Je cherche un moyen d'alléger mes requêtes mais sans succès ! J'ai vu sur le site de Data Tables que l'on pouvait procéder de plusieurs façons avec un "Server-side processing" mais je ne comprend pas l'utilisation de cette fonction.

Quelqu'un aurait-il une idée pour m'aider ou une explication sur la mise en place d'un "Server-side processing" ?

Merci d'avance.
zubaran est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 14h58   #2
Membre Expert
 
Avatar de Watilin
 
Homme Matilin Torre
Étudiant
Inscription : juin 2010
Messages : 679
Détails du profil
Informations personnelles :
Nom : Homme Matilin Torre
Âge : 23
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 679
Points : 1 202
Points : 1 202
Bonjour,
si tu dois envoyer plus de 1000 entrées de ta base de données au client, il y a certainement un mauvais choix de conception au départ.

Si j’ai bien compris (http://www.datatables.net/usage/server-side) le principe du serveur-side processing c’est que c’est à toi de faire le traitement, côté serveur, qui va alléger la quantité de données à envoyer au client.

Le truc que je comprends pas dans ton code, c’est que tu initialises ton DataTable sans lui donner l’adresse de ton serveur. Est-ce que tu remplis ton tableau à l’avance ?
De plus, si tu utilises MySQL, il est évident qu’il faudra alléger les données avant de les envoyer. Le server-side processing est donc la seule solution adaptée.
Par exemple, pour paginer :
Code SQL :
1
2
SELECT * FROM uneTable LIMIT 400, 50
-- sélectionne 50 entrées à partir de la 400-ième
__________________
Disposition de clavier ergonomique française : Bépo
Watilin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 16h05   #3
Invité de passage
 
Inscription : février 2006
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 14
Points : 1
Points : 1
Salut Watilin,

Merci pour ta réponse !

Citation:
si tu dois envoyer plus de 1000 entrées de ta base de données au client, il y a certainement un mauvais choix de conception au départ.
Je comprend pas pourquoi tu pense cela, mes requetes MYSl affichent des listes de jeux donc un MYSQL pour lister le tout.

Citation:
SELECT * FROM uneTable LIMIT 400, 50
-- sélectionne 50 entrées à partir de la 400-ième
J'utilise déjà des paginations manuelles avec une telle manip ( nb d'affichages, pagination 1 à 1 ou +, etc... )

Mais l'avantage d'utiliser un script tel que Data Tables justement c'est qu'une fois la page avec la liste chargée le visiteur n'est plus redirigé sur aucune page, les pages défilent sans recharger la page. Je trouve cela pas trop mal !

Citation:
c’est que tu initialises ton DataTable sans lui donner l’adresse de ton serveur.
? Ma liste se charge avec une requête mysql et du php simple tel que par exemple
Code :
1
2
3
4
5
6
7
8
9
10
 
SELECT Nom, Jeu, Lien FROM machin ORDER BY patati;
 
et une boucle qui affiche la liste
 
for (i=0;i<total_requete;i++) {
 
ma liste
 
}
Sinon j'ai allégé un peu ma requête et installé un script de chargement qui fait patienter le visiteur. Pour une liste de 4000 resultats la page met environ 5sec à se charger.
zubaran est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 17h37   #4
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
Citation:
Envoyé par zubaran
Je comprend pas pourquoi tu pense cela
Peut-être à cause de :
Citation:
Envoyé par zubaran
une Data Table met du temps à se charger et j'ai peur qu'une trop grande utilisation de celle-ci par les visiteurs ne ralentisse mon serveur ou ma base MYSQL. Qu'en pensez-vous ?
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 14h43   #5
Nouveau Membre du Club
 
François
Inscription : mars 2008
Messages : 59
Détails du profil
Informations personnelles :
Nom : François
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2008
Messages : 59
Points : 25
Points : 25
Salut!

Citation:
Mais l'avantage d'utiliser un script tel que Data Tables justement c'est qu'une fois la page avec la liste chargée le visiteur n'est plus redirigé sur aucune page, les pages défilent sans recharger la page. Je trouve cela pas trop mal !
L'utilisation du server-side processing ne modifie pas l'aspect AJAX offert par le plugin datatables (pas de rechargement de la page). L'unique différence réside dans la quantité de données envoyée au tableau qui est moindre et qui permet un chargement beaucoup plus rapide (tu peux choisir le nombre de résultat affichés par page (par ex 25, 50, 100...)

Si tu as des boutons de pagination (page précédente, page suivante), le plugin va générer automatiquement la requête SQL en modifiant les paramètres du LIMIT comme tu l'as déja fait.

Citation:
Ayant une liste de + de 10 000 résultats une Data Table met du temps à se charger et j'ai peur qu'une trop grande utilisation de celle-ci par les visiteurs ne ralentisse mon serveur ou ma base MYSQL. Qu'en pensez-vous ?
Datatable est un plugin javascript: ce n'est pas ton serveur web qui risque de morfler si tu affiche 10 000 résultats mais plutôt le navigateur du visiteur:
Tu parles d'un temps de chargement de 5s, mais sur ces 5s, il n'y a à mon avis que quelques secondes de réponses du serveur, le reste étant du à ton navigateur qui doit bosser dur pour tout afficher...

Pour implémenter ça:
tu crées un fichier toto.php qui contient ça:
http://www.datatables.net/developmen...side/php_mysql

Seule la partie ci-dessous est à modifier:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
/* Array of database columns which should be read and sent back to DataTables. Use a space where
/* you want to insert a non-database field (for example a counter or static image)
	 */
	$aColumns = array( 'engine', 'browser', 'platform', 'version', 'grade' );
 
	/* Indexed column (used for fast and accurate table cardinality) */
	$sIndexColumn = "id";
 
	/* DB table to use */
	$sTable = "ajax";
 
	/* Database connection information */
	$gaSql['user']       = "";
	$gaSql['password']   = "";
	$gaSql['db']         = "";
	$gaSql['server']     = "localhost";
Tu modifie ton code javascript comme ceci (en ajoutant d'autre paramètre si besoin, comme le nombre de résultat par page, la pagination, les colonnes à trier ou à rechercher, etc...)

Code :
1
2
3
4
5
6
7
8
$(document).ready(function(){
	$('#liste').dataTable({
		"bProcessing": true,
		"sPaginationType": "full_numbers",
		"bServerSide": true,
		"sAjaxSource": "toto.php"
	});
});
Bon courage...
franquis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h54.


 
 
 
 
Partenaires

Hébergement Web