IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Temps de chargement dans un Gridview


Sujet :

ASP.NET

  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut Temps de chargement dans un Gridview
    Bonjour

    J'ai mis en place un GridView avec une requête SELECT qui retourne pas mal de résutalt, genre plus de 1000 sur 15 colonnes.
    Du coup, j'ai activé la gestion des pages avec 25 par page. Mais 'jai l'impression qu'à chaque changement de page, il recharge tout. Du coup, ça prend du temps.

    J'avais cru comprendre que notre ami le GridView savait aller chercher juste ce dont il a besoins, c'est à dire les 25 enregistrements spécifiques à la page choisi ?

    Maintenant, il fort possible que j'ai oublié un truc, parce que j'ai codé ça vite fait, justement pour voir les performances.
    Voici mon code, vous constarez qu'il est trés light.
    Côté HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <%@ Control Language="VB" AutoEventWireup="false" CodeFile="GestionBien.ascx.vb" Inherits="Outil_GestionBien" %>
    <asp:SqlDataSource ID="sdsBien" runat="server" ConnectionString="<%$ ConnectionStrings:acced %>"></asp:SqlDataSource>
    <asp:GridView ID="gvBien" runat="server" DataSourceID="sdsBien"></asp:GridView>
    Côté CodeBehind
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Partial Class Outil_GestionBien
        Inherits System.Web.UI.UserControl
     
    	Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
    		sdsBien.SelectCommand = "SELECT * FROM ListingMandat"
    		With gvBien
    			.AllowPaging = True
    			.PageSize = 25
    		End With
    	End Sub
    End Class
    Merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par zooffy Voir le message
    J'avais cru comprendre que notre ami le GridView savait aller chercher juste ce dont il a besoins, c'est à dire les 25 enregistrements spécifiques à la page choisi ?
    Et bah non
    Il affiche que les 25 lignes mais récupère tout en base à chaque fois

  3. #3
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Ok, donc j'ai mal comrpis à l'origine.

    Alors abordons le problème sous un autre angle. J'ai un vrai problème de performance. J'ai optimisé ma requête au maximum.
    J'ai vu que je pouvais travailler sur le SqlDataSource avec la propriété EnabledCache. Visiblement, ça marche bien, les performances sont bonnes. Mais du coup, lorsque qu'il y a un changement dans la base, il ne le prends pas en compte.

    Comment je pourrais faire pour qu'il me mette à jour le résultat de la requête, tout en utilisant le cache ?

    En fait, je maitrise mal les subtilités du SqlDataSource, mais je crois bien que c'est une arme absolue pour ce genre de chose.

    J'ai pensé mettre un bouton "mise à jour" dans la page, à côté du GridView. Comme ça, l'utilisateur navigue et ouvre autant de fiche qu'il veut et quand il ne ressent el besoin, il recharge. Faut savoir aussi que le Gridview va avoir tout une baterie de filtre et qu'il sera beaucoup solicité.

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Ton cache sera rechargé suite à toute modification en base

  5. #5
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Je viens de faire le test suivant :
    J'ai rajouté la propriété dans mon code comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
    		With sdsBien
    			.SelectCommand = "SELECT * FROM ListingMandat"
    			.DataSourceMode = SqlDataSourceMode.DataSet
    			.EnableCaching = True
    		End With
     
    		With gvBien
    			.AllowPaging = True
    			.PageSize = 25
    		End With
    	End Sub
    Le reste du code ne change pas.

    J'ai changé une info dans la base, en direct, comme si un autre utilisateur l'avais fait ou n'importe quel traitemnt pouvant le faire.

    Lorsque j'ai appellé ma page, il a mis beaucoup de temps à ce charger. Puis, j'ai navigué dans les pages du GridView, puis je suis revenu sur la apge de GridView qui contient la ligne modifiée et la valeur est toujours l'ancienne.

    Donc, soit j'ai pas bien fait mon SqlDataSource ou le GridView, soit le cache ne se mets pas à jour tout seul.

    Vois tu le problème ?

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    T'as configuré ta base pour qu'elle gère le cache?
    (Faut bien qu'elle informe ton appli que son contenu a changé, et c'est pas le comportement par défaut)

  7. #7
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Ah, ben non, j'ai pas fait ça.

    Mais, comment on fait ? Parce que je sais pas le faire.
    Je suis avec SQL Server 2000.

  8. #8
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052

  9. #9
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour ton aide.
    Ce lien à l'air, bien, il ne m'aide pas du tout, mais il a l'air bien.

    Bon, maintenant, j'ai compris qu'il fallait créer un site, activer le Membership et appeler la base de donnée.
    Ben tout, ça j'ai fait. Et ça change pas grand chose.

  10. #10
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    T'as tapé la ligne de cmd pour sql server?

  11. #11
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Oui, mais non, enfin pas avec ces critères là.

    Mais surtout, il faut bien comprendre que je ne comprend rien à l'article et du coup, je ne vois pas les détails.

    Quand je vois aspnet_regsql je sais que ça active le MemberShip et que je vais pouvoir gérer des utilisateurs et basta. Maintenant, dans l'article peut être qu'il y a marqué que ça fait autre chose, mais je ne le sais pas.

    Qu'est ce fait cette ligne de commande ? Parce que, je voudrais pas non plus mettre la base à terre.

  12. #12
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Bon, histoire de pas être trop con, j'ai passé la ligne de commande sur la table. Et j'ai ajouté la config proposée dans le web.config.

    ça change rien.

    Mais je note le détail suivant : la source de mon Gridview est une vue. Alors, faut il faire la ligne de commande sur la vue ?

  13. #13
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    T'as passé quoi comme commande?

  14. #14
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    T'as eu ça comme message à la fin:

    Enabling the table for SQL cache dependency.
    ..
    Finished.

  15. #15
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Alors, j'ai passé cette commande là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aspnet_regsql.exe -S <Server> -U <Username> -P <Password> -ed -d Northwind -et -t Employees
    En changeant les choses avec mes infos à moi, bien sûr. Et j'ai bien eu le mesage que tu dit.

    Ensuite j'ai mis le morceau de code dans le Web Config.
    Mais je viens de voir un truc en relisant l'article. Ya une ligne à mettre en haut de la page et je l'ai pas fait parce que mon GridView n'est pas dans une page, mais dans un composant. Alors du coup, je suis un peu paumé.

  16. #16
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Pour info, la plupart des articles de la msdn sont traduits, il suffit de changer la langue dans l'url.
    Pour le lien en fançais: http://msdn.microsoft.com/fr-fr/libr...2y(VS.80).aspx

  17. #17
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par zooffy Voir le message
    Mais je viens de voir un truc en relisant l'article. Ya une ligne à mettre en haut de la page et je l'ai pas fait parce que mon GridView n'est pas dans une page, mais dans un composant.
    Quelle ligne?

  18. #18
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour l'info, c'est un truc que je savais pas.

    Sinon, je crois que je suis dans un boucle infernale. Visiblement, le cache ne se vide plus du tout et ma donnée modifiée ne se mets pas à jour, je reste toujours avec la même.

    Par contre, ça speed un max, chargemtn de page, tout le tremblement, tout fonce, mais avec les anciennes données........

    Du coup, je sais pas comment vider le cache ou forcer le rechargement des données.

  19. #19
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Normalement, s'il y a un changement en base, sql server en informe asp net.
    A la prochaine interrogation de la page, asp net va vider le cache et réinterroger la base

  20. #20
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Configuration de la page Web pour la mise en cache Dans cette partie de la procédure pas à pas, vous configurerez la page pour la dépendance de cache SQL en fonction de la table Employees de la base de données Northwind.
    Pour configurer la page Web pour la mise en cache

    1. Basculez en mode Source.
    2. En haut de la page, ajoutez la directive suivante pour indiquer la dépendance :
      Copier le code

      <%@ OutputCache Duration="3600" SqlDependency="Northwind:Employees" VaryByParam="none" %>

    L'attribut VaryByParam indique si ASP.NET doit prendre en considération les paramètres de la page (telles qu'une chaîne de requête ou des valeurs publiées) lors de la mise en cache. Lorsque VaryByParam a la valeur none, aucun paramètre ne sera pris en compte ; la même page sera envoyée à tous les utilisateurs, quels que soient les paramètres supplémentaires fournis. L'affectation de * (un astérisque) à VaryByParam signifie que, pour chaque combinaison de paramètres de demande, une page unique sera mise en cache. Toutefois, l'affectation de * à VaryByParam peut contraindre de nombreuses versions différentes de la page à être mises en cache, en conséquence, si vous connaissez les paramètres qui permettent de varier la mise en cache, il est recommandé de les spécifier explicitement dans l'attribut VaryByParam. Pour plus d'informations, consultez Mise en cache de plusieurs versions d'une page.


Discussions similaires

  1. Comment réduire le temps de chargement d'une base SQLite dans un dataset?
    Par billybobbonnet dans le forum Accès aux données
    Réponses: 9
    Dernier message: 29/08/2014, 17h39
  2. [SP-2007] Temps de chargement d'un document dans Sharepoint
    Par mouss4rs dans le forum SharePoint
    Réponses: 11
    Dernier message: 23/10/2012, 14h25
  3. Réponses: 6
    Dernier message: 22/09/2010, 15h10
  4. Temps de chargement dans un TreeView
    Par Delphi-ne dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/05/2007, 17h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo