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

jQuery Discussion :

Bug étrange cache navigateur


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 107
    Par défaut Bug étrange cache navigateur
    Bonjour à tous,

    Voilà j'ai une petite question concernant javascript.

    J'ai passé deux heures à tester un bout de code tout bête. Mon problème était qu'une variable à première vue ne s'initialisait pas et refusait de contenir ce que je lui disais de contenir

    Le code étant vraiment simpliste je me suis arraché les cheveux un long moment... Et puis ayant envisagé toutes les possibilités j'ai du être très inventif voir sorcier pour trouver la solution :

    je ne sait pas pourquoi mais j'ai décidé de fermer mon navigateur (chrome) puis de faire un ipconfig /flushdns pour vider le cache windows (je fait ça quand parfois une modif sur du css n'est pas prise en compte bref...).

    Je ré-ouvre chrome et je vais re-tester ma page (identique, je n'ai rien touché entre temps) et là hop ça marche... Donc ce qui me viens le plus naturellement à l'esprit c'est que si mon bout de code et le même mais que la réaction n'est pas la même avant et après avoir ré-ouvert mon navigateur c'est que quelque part avant et après cette action un truc magique à fait que ma variable a enfin réagit normalement est s'est initialisée... Et donc viens ma question débile : ne me dites pas que dans certains cas un navigateur ou la version de javascript de ce navigateur soit capable pour X raisons de mettre en quelque sorte en cache le contenu d'une variable javascript... Ce qui serait complètement ridicule et donc j'aurais du mal à y croire... Mais alors quel serait le problème ? Voici le code pour info car très simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $(document).ready(function(){
        var s_precision_plus="SAS SAS SAS SAS";
        var tototiti="AAAAA";
        $("#texte_final").html("<p>"+s_precision_plus+tititoto+"</p>");
    });
    Je me suis aperçu du problème quand j'ai modifié le contenu de tototiti en BBBB et celui de s_precision en SCISCISCI... La page affichait toujours SAS SAS SAS SASAAAAA ... J'ai me suis même dit que c'était mon ftp qui ne chargeait pas la page, ou bien que je me plantait de page mais non... D'ou ma question sur un éventuel cache ou un truc dans le genre.

    Des infos là dessus ?

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ca n'a rien d'étrange ni rien d'un bogue...
    C'est le comportement classique et attendu d'un navigateur : sauf indication contraire, toute ressource demandée est mise en cache et réutilisée si tu la redemandes.
    Au passage, tu n'as pas besoin de faire les manips expliquées pour contourner cela, un simple CTRL + F5 suffit !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, 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
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 107
    Par défaut
    Donc si j'ai bien compris rien ne me permet d'être certain que mes variables javascript sont bien initialisées à tout les coups ? Pourtant à chaque exécution du script la variable est explicitement déclarée et une histoire de cache viendrait tout mettre en l'air ? hé bin là j'ai envie de dire chapeau javascript... Y'a pas un moyen de s'assurer que les variables sont initialisées systématiquement à chaque exécution du script ?

    Dit différemment je met en ligne ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $(document).ready(function(){
        var s_precision_plus="SAS SAS SAS SAS";
        var tototiti="AAAAA";
        $("#texte_final").html("<p>"+s_precision_plus+tititoto+"</p>");
    });
    je le teste et j'obtiens bien l'affichage SAS SAS SAS SASAAAAA

    puis je modifie mon code en ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $(document).ready(function(){
        var s_precision_plus="totototototo";
        var tototiti="meumeumeu";
        $("#texte_final").html("<p>"+s_precision_plus+tititoto+"</p>");
    });
    Je charge ma page sur le serveur je vais dans le navigateur et recharge ma page et là ça affiche toujours SAS SAS SAS SASAAAAA ...

    Je trouve ce mécanisme de cache un peu flippant quand même...

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    soit en le précisant au niveau du serveur dans le header de ton fichier soit en passant un paramètre changeant (type type stamp) lors de l'appel du fichier. Bref rien que du classique traité environ 2 fois pas semaine sur le forum ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Il n'y a aucune variable mise en cache...
    Ce sont les ressources qui le sont en fonction de l'URL appelée, que ce soit un script, une image, une feuille de style ou quoi que ce soit.
    Donc JavaScript n'a rien à voir là-dedans, c'est aux navigateurs qu'il faut t'en prendre.

    Donc : les variables seront initialisées au moment de l'interprétation du script (comme attendu), sauf que si le script provient du cache, les modifications effectuées dans le script du serveur ne seront prises en compte que si tu indiques qu'il ne faut pas utiliser le cache.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, 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
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 107
    Par défaut
    Ok pigé merci Mais naïvement je pensais qu'un script n'était pas mis en cache... Cette possibilité me paraissait aberrante pour un script... D'ailleurs soit dit en passant je vois de moins en moins l'intérêt de mettre quoi que ce soit en cache navigateur... Cette possibilité obscène devrait disparaître à jamais

    Merci encore !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/06/2006, 15h43
  2. Bug étrange
    Par xavier faure dans le forum Langage
    Réponses: 4
    Dernier message: 01/04/2006, 13h54
  3. désactiver cache navigateur pour pages JSP/Tomcat 5.5
    Par iubito dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 24/03/2006, 17h50
  4. [VB6]Bug étrange lié à l'horloge...
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 16/02/2006, 15h19
  5. chargement pages php + cache navigateur
    Par grinder59 dans le forum Langage
    Réponses: 6
    Dernier message: 06/10/2005, 14h44

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