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

JavaScript Discussion :

Fichier Javascript modifié non reconnu par Explorer


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2009
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 256
    Points : 79
    Points
    79
    Par défaut Fichier Javascript modifié non reconnu par Explorer
    Bonjour,
    Depuis des années, je me bats avec Explorer qui ne reconnaît pas quand un fichier Javascript a été modifié.
    J'ai l'option « Automatiquement » dans les paramètres des fichiers temporaires, malgré ça, Explorer ne relit pas les fichiers modifiés.
    Je dois à chaque fois aller les supprimer de la cache, c'est assommant.

    Je suppose qu'avec l'option « à chaque ouverture de la page » ça règlerait le problème,
    mais ce problème arrive aussi aux visiteurs de mes sites, et je tiens à me mettre dans les mêmes conditions qu'eux, afin de voir les mêmes problèmes qu'eux.
    Firefox n'est pas une option non plus, pour les même raisons.

  2. #2
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    rajoute une version en paramètres dans les src de tes scripts?
    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 !

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    une façon simple
    générer un timestamp et référencer le script où l'appel ajax par
    http://foo.bar/test.js?_ts=6576576585
    l'url étant systématiquement différente le conenu sera toujours rechargé.

    A+JYT

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2009
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 256
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    rajoute une version en paramètres dans les src de tes scripts?
    Mais ce n'est quand même pas normal qu'Explorer (et je remarque que j'ai le même problème avec Firefox)
    ne soit pas foutu de comparer convenablement les dates des fichiers entre sa cache et la version d'origine.
    Tout se passe comme si la date enregistrée dans la cache n'était pas la même que celle du fichier.

  5. #5
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Le navigateur ne compare pas la date du fichier dans le cache

    il reçois un fichier. Il lit les métadata dans le header http
    si le header no cache est présent il utilise le fichier sans le mettre en cache
    si un header expire est présent il met le fichier en cache et indique que ce cache expire à la date donnée
    s'il n'y a pas de header pour la gestion du cache le navigateur fait ce que le développeur du navigateur à prévu par défaut (pas de spec donc chaque navigateur fait ce qu'il veut) souvent n'expire jamais

    lorsque l'url du dit fichier et demandée de nouveau
    le navigateur regarde son cache
    si le fichier n'et pas présent il le demande au serveur
    si le fichier est présent il regarde la date du moment et la date d'expiration
    si le cache à dépassé la date il demande au serveur
    si le cache n'a pas dépassé la date il prend le cache.

    à aucun moment dans ce process le fichier est dans le cache avec un date lointaine il ne demande quoi que ce soit au navigateur.

    il ne peut donc pas comparer la date sur le serveur avec celle du cache.

    tu as plusieurs solutions
    soit tu peux intervenir sur ton serveur et le paramètrer pour que pour les fichiers statiques la date d'expiration soit courte. au quel cas le cache expirant le navigateur redemandera au serveur.
    si tu mets une date courte le navigateur ne rechargera la page du serveur que si la date à expiré. dans ce cas il demandera le fichier au serveur. si le fichier à changé le serveur lui envoi 200 et le contenu. et si le fichier n'a pas changé il lui renvoi 302(no change) est rien de plus. le navigateur sait alors qu'il put réactiver son cache pour une période (même durée de cache)
    c'est donc le serveur qui compare la date et pas le client

    soit tu ne peux pas intervenir sur la conf serveur et tu peux utiliser l'astuce du paramètre dans l'url
    en effet s'il y a un paramètre apriori il s'agit d'une url dynamique (et le navigateur ne peut pas savoir que ce n'est pas le cas) et le cache n'est pas utilisé.

    A+JYT

  6. #6
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par sekaijin
    s'il y a un paramètre apriori il s'agit d'une url dynamique (et le navigateur ne peut pas savoir que ce n'est pas le cas) et le cache n'est pas utilisé.
    Pas tout à fait il me semble...
    S'il y a un paramètre, alors la ressource demandée est différente de celle sans paramètre, donc le navigateur demande la ressource au serveur et la met dans le cache.
    Si la ressource est de nouveau demandée avec le même paramètre, alors cette ressource est la même que celle demandée précédemment et c'est celle du cache qui est utilisée.

    C'est d'ailleurs tout à fait conforme à la définition du verbe GET (une URL avec paramètre étant de type GET).
    Il faut aussi noter qu'une ressource demandée en POST (notamment avec AJAX) sera toujours demandée au serveur puisque le verbe POST indique explicitement qu'on envoie des données à traiter par le serveur.
    Autre note importante, les ancres de l'URL ne sont pas prises en compte dans ce processus.

    Citation Envoyé par schnee
    Mais ce n'est quand même pas normal
    Si, c'est tout à fait normal puisque c'est le rôle du cache d'éviter de faire la requête au serveur ! Donc si le cache inhibe la requête au serveur, comment veux-tu savoir si le fichier est modifié dessus ?
    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

  7. #7
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    oui j'ai simplifié
    A+JYT

Discussions similaires

  1. Propriété content non reconnue par Internet Explorer
    Par laurentSc dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 07/08/2014, 14h46
  2. Réponses: 2
    Dernier message: 14/07/2012, 13h26
  3. Fichier css non reconnu par Firefox
    Par equilibres dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 10/02/2009, 08h50
  4. fichier .cc non reconnu par VC++
    Par xanax dans le forum MFC
    Réponses: 4
    Dernier message: 15/05/2006, 15h13
  5. [Lomboz] [JBoss] JBoss 3.2.6 non reconnu par Lomboz ?
    Par romain3395 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 17/12/2004, 16h35

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