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 :

cache asp.net avis d'expert


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 61
    Par défaut cache asp.net avis d'expert
    Bonjour,

    Dans une appli web, je dois afficher des données issues d'un fichier xml dans un tableau.
    les données affichées varient selon un parametre fonction du choix de l'utilisateur.
    en fait il s'agit d'une appli météo.
    le fichier xml contient les prévisions de 100 zones géographiques
    et les données affichées dans le tableau sont les prévisions de la zone qu'aura choisi l'utilisateur.
    le fichier xml, source de données, est mis à jour 3 fois par jour.

    pour optimiser tout ça, je compte utiliser la mise en cache d'asp.net

    2 solutions :

    1) mise en cache de données d'application dans un dataview:
    je mets l'ensemble des données du fichier xml dans un dataview, et je mets ce dataview en cache avec une dépendance sur le fichier xml.
    dès que le fichier xml change le dataview est mis à jour.
    reste à créer à chaque demande le tableau avec les données du dataview issu du cache.

    2) mise en cache de pages ASP.net ou plutot mise en cache de plusieurs versions d'une page.
    je mets toute la page en cache en utilisant VaryByparam pour prendre en compte le choix de l'utilisateur et tjrs une dépendance sur le fichier xml.


    cl° : dans la première solution, je traine dans le cache un dataview qui contient les données des 100 zones et à chaque demande, je dois créer mon tableau pour présenter les données d'une seule zone.

    Dans la deuxième, je mets dans le cache au pire 100 versions de la page puisque 100 zones météo, donc 100 choix possibles.
    reste aussi la solution de ne pas utiliser le cache et de "parser" le fichier xml à chaque demande pour afficher uniquement les données de la zone météo choisi par l'utilisateur.

    selon vous quelle est la meilleure solution ?, par meilleure j'entends la plus performante.

    merci de vos réponses

  2. #2
    CUCARACHA
    Invité(e)
    Par défaut
    Salut,

    Avant d'optimiser, tu peux nous dire la taille de ton fichier XML ?
    Etant donné que les informations météorologiques ne varient pas d'un utilisateur à l'autre, et que par définition un fichier XML peut être considéré comme le résultat d'un sérialisation, je créerais un petit proxy capable de mettre à jour une variable de type liste générique de ta ligne d'information vidéo stocké dans l'objet application. La mise à jour de l'objet application n'aurait lieu qu'une fois par jour, dès qu'un utilisateur sollicite la liste et que celle ci n'est pas à jour sans quoi, elle serait tout le temps dispo et interrogeable par Linq To Object.

    A mon avis c'est beaucoup plus simple que l'usine à gaz à laquelle tu penses mais je n'ai pas autant réfléchi que toi à la question et je ne suis certainement pas au courant des contraintes.

    ++

    Laurent

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 61
    Par défaut
    bonjour,

    le fichier fait 300 ko
    Désolé mais j'avoue ne pas tout comprendre
    "mettre à jour une variable de type liste générique de ta ligne d'information vidéo"
    donc si tu peux prendre le temps de m'expliquer, ce serait sympa, sinon tant pis et merci quand même pour la réponse.

  4. #4
    CUCARACHA
    Invité(e)
    Par défaut
    pardon c'était ligne d'information Météo...

    Chaque ligne de ton fichier XML peut être injecté dans une classe. Les instances de cette classe peuvent remplir une liste générique dont le Type correspond à la structure de ta ligne XML.

    Dans ton global.asax :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DateTime dateDerniereMiseAJour;
    DateTime dateDerniereVersion;
    List<TonTypeMeteo> lst;
     
    dateDerniereVersion = VerifDateMiseAjour()
    if(dateDerniereMiseAJour !=dateDerniereVersion) {
        lst = remplissageDepuisFichierXML();
        dateDerniereMiseAJour = dateDerniereVersion
        Application.Add("MesDonneesMeteo",lst);
    }
    depuis les pages aspx :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<TonTypeMeteo> lst = (List<TonTypeMeteo>)Application["MesDonneesMeteo"];
    après tu requête en linq

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var mesInfo = from DM in lst
                        where...
                        select...
    Il faudra affiner un peu quand même et ranger tout ça...

    ++

    Laurent

  5. #5
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Tu peux aussi utiliser une variable statique dans une classe statique

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 61
    Par défaut
    merci c'est dèjà un peu plus claire
    je vois bien que vous êtes des pro de la programmation.
    moi un peu moins que vous forcement mais assez pour comprendre (enfin j'espère)
    pour aller jusqu'au bout du raisonnement, il y a encore un truc qui m'échappe encore.
    En quoi l'utilisation de variables statiques ou d'une liste générique, est-il plus performant que le fait de mettre un dataview dans le cache.

    en quoi le parcours, la recherche dans la liste générique est-elle mieux que le parcours, la recherche dans un dataview ou dans un datatable

    faut-il comprendre que les mécanismes de cache proposés dans asp.net sont là pour répondre aux besoins de développeurs qui ne connaissent pas ou peu la Programmation notamment objet.
    autrement dit ce sont des raccourcis, des sortes d' utilitaires dont les fonctionnalités peuvent être obtenu autrement à condition d'avoir un certain niveau de programmation.
    en tout cas merci de vos réponses

Discussions similaires

  1. [IIS 7.5] Cache ASP.NET
    Par Billouze dans le forum IIS
    Réponses: 0
    Dernier message: 08/08/2014, 11h48
  2. [SP-2007] Cache Asp.net ne cache pas dans un cas
    Par phfle1 dans le forum SharePoint
    Réponses: 0
    Dernier message: 22/07/2009, 22h07
  3. Cache Asp.net ne cache pas dans un cas
    Par phfle1 dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 22/07/2009, 22h03
  4. Réponses: 4
    Dernier message: 03/02/2006, 11h06

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