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 :

PageLoad() et mise en cache de pages [Débutant]


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut PageLoad() et mise en cache de pages
    Bonjour,

    Je travaille actuellement sur une application, et à force de manipuler et debugger, je me suis aperçu du phénomène suivant: Si j'accède à une des pages pour la première fois, la méthode pageLoad() est appelée, ce que je croyais être toujours le cas. Pourtant, si je retourne sur la page d'accueil (par un lien hyperlink), et que je reviens sur cette même page, je me suis aperçu que la 2e fois ma méthode PageLoad() n'est pas appelée...

    Par intuition je pense que cela est du à une mise en cache qui fait que ma page n'est pas rechargée, mais j'aimerais comprendre ce phénomène. L'un d'entre vous saurait-il me l'expliquer? ou me renvoyer vers des articles/cours qui en parlent? C'est d'autant plus gênant que certains calculs ne sont pas refaits et que la page ne s'affiche pas comme je le souhaiterais du coup...

    Merci d'avance!

    J'allais oublier, je travaille sur une appli en .Net 3.5 et le tout doit fonctionner avec IE 8.0+ (serveur IIS).

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    En principe ça doit repasser dedans. Par contre si tu fais un PostBack pour changer de page et que tu as mis ton code dans un bloc qui ressemble à ça :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (!Page.IsPostBack)
    {
    }
    au sein du Page_Load, effectivement tu ne repasseras pas dedans.

    Peut-on voir le contenu de ta méthode Page_Load et la façon dont tu gères les changements de page ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut
    Bonjour et merci de cette réponse rapide! Cela n'est pas du à un test sur "IsPostBack" mais probablement sur la façon dont la navigation se fait.

    Il y a 2 types de liens qui provoquent le même phénomène:

    1-Des liens hyperlinks:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <asp:HyperLink ID="adminPage" runat="server"  NavigateUrl="~/Admin.aspx" Text="Admin"></asp:HyperLink>

    Si je navigue depuis la page d'admin vers la page d'accueil et retourne vers l'admin, plus de passage dans le PageLoad() la seconde fois? Pourtant il se fait la première fois que j'arrive sur la page.

    2-Des boutons ASP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:Button ID="bt1" runat="server" Text="bouton" BackColor="#FFE4A8" Width="143px" OnClientClick="window.location.href = 'maPage.aspx'; return false;" />
    Je ne sais pas pourquoi du javascript a été utilisé pour cela... je vais demander à l'auteur. Suite à ta remarque j'ai essayé d'utiliser la prorpiété PostBackURL du bouton, et ca semble corriger le problème. Dans ce cas là il passe systématiquement par le pageLoad().

    Est-ce la pratique à adopter? Que faut-il changer au niveau de l'Hyperlink utilisé pour corriger le problème?

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Rudyyyy Voir le message
    Je ne sais pas pourquoi du javascript a été utilisé pour cela... je vais demander à l'auteur. Suite à ta remarque j'ai essayé d'utiliser la prorpiété PostBackURL du bouton, et ca semble corriger le problème. Dans ce cas là il passe systématiquement par le pageLoad().
    C'est bizarre comme système de navigation... Quand tu utilises les HyperLinks, il n'y a pas de PostBack, c'est comme un lien classique (<a ...></a> en HTML). Par contre pour les boutons, il est possible qu'ils génèrent un PostBack lors du click.

    Est-ce la pratique à adopter? Que faut-il changer au niveau de l'Hyperlink utilisé pour corriger le problème?
    Ca dépend de ton application ! Dans le cas que tu décris, je dirais que si tu ne veux pas avoir à revoir la mécanique de navigation avec les boutons, il vaut mieux déclencher un PostBack avec les HyperLinks.

    Cependant s'agissant juste de navigation, classique, je ne vois pas trop l'intérêt de faire ça. C'est à toi de voir ce que ça coûterai de tout revoir, ou d'adapter à l'existant.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Aide pour mise en cache de pages dynamiques
    Par Ikaly dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 31/08/2012, 11h27
  2. [Squid] Mise en cache de page dynamique
    Par Dark#Sidious dans le forum Réseau
    Réponses: 0
    Dernier message: 20/11/2008, 10h03
  3. Mise en cache et page non rechargée
    Par AngelFire dans le forum Langage
    Réponses: 1
    Dernier message: 29/01/2008, 06h52
  4. mise en cache de page web : fonctionnement
    Par Emcy dans le forum Développement
    Réponses: 2
    Dernier message: 19/11/2007, 13h02
  5. [Dates] Mise en cache des pages
    Par Alex67 dans le forum Langage
    Réponses: 2
    Dernier message: 27/03/2007, 12h42

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