Comment supprimer du cache un script .js ?

Résolu
bluemandfr Messages postés 55 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 16 mai 2013 - 12 nov. 2009 à 16:22
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 - 19 nov. 2009 à 18:43
Bonjour à tous !

J'ai dans une page HTML le code suivant :

<script language="javascript" src="MonScript.js"></script>


Question :

Comment détruire le fichier "MonScript.js" du cache ? (ou comment faire pour qu'il ne soit pas mis en cache)

Merci par avance.

BlueMan.

15 réponses

Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
19 nov. 2009 à 18:43
Si j'ai souligné indiqué, c'est que ce n'est qu'un indication que le navigateur peut faire ce qu'il veut avec.

Pour le code, j'ai moi-même testé de mon côté en local et les entêtes sont bels et bien ajoutées à la requête.
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
12 nov. 2009 à 16:37
Bonjour,
la question c'est : pourquoi faire ?
on peut avoir besoin de relire un fichier
depuis le site et pas depuis le cache,
en général, "il suffit" d'ajouter une
valeur aléatoire derrière l'url,
style : xml.open('GET', 'fichier?'+new Date(), false);
peut-être voulez vous être sûr que la dernière
version du script soit prise en compte ?
si c'est le cas : document.write de la ligne
avec new Date() derrière l'url du .js, voire
charger ce script en dynamique.
Cordialement
1
bluemandfr Messages postés 55 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 16 mai 2013
12 nov. 2009 à 18:56
Bonjour.

Je soushaite que le script soit chargé depuis le site web, mais qu'il n'en existe aucune copie dans le cache du navigateur. Merci.

BlueMan.
0
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
13 nov. 2009 à 05:32
Tu peux ajouter l'entête côté serveur suivante pour le fichier ne soit pas mis en cache :

Cache-Control: no-cache, must-revalidate

Pour ajouter des entêtes côté serveur la façon la plus simple est d'ajouter ceci dans le fichier .htaccess qui se trouve dans le dossier de ton fichier javascript :

<Files MonScript.js>
    Header append Cache-Control no-cache
    Header append Cache-Control must-revalidate
</Files>


Il faut juste t'assurer que le module mod_headers pour apache est activé.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bluemandfr Messages postés 55 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 16 mai 2013
13 nov. 2009 à 17:37
Re-bonjour.

Je viens de trouver comment créer un fichier : .htaccess sous windows XP : par le notepad et lors de la sauvegarder, il faut mettre des guillements :

".htaccess"


Aussi, pous tous les fichiers j'ai mis :

<Files *.js>
    Header append Cache-Control no-cache
    Header append Cache-Control must-revalidate
</Files>


MAIS cela ne marche pas : le navigateur a toujours une copie dans le cache, et même si j'ai supprimé le fichier sur le serveur, si je tape dans la barre d'adresse du navigateur le chemin du fichier MonScript.js, alors il me propose de le télécharger, ce que je peux faire...

Comment résoudre ce problème ?

Merci !

BlueMan.
0
bluemandfr Messages postés 55 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 16 mai 2013
13 nov. 2009 à 21:13
Re-bonjour.

Bin j'ai tout essayé avec .htaccess, et cela ne marche pas :

1) Le fichier Monscript.js est TOUJOUS dans le dossier fichies temporaires du navigateur.
2) Si je l'invoque manuellement par : http://www.monsite.com/MonScript.js : et bien, je peux le télécharger....

Que faire ?????

Merci !

BlueMan.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
14 nov. 2009 à 09:39
et ??? pourquoi vouloir éviter de le mettre
dans le cache ???? si on peut 'forcer' à aller
le relire sur le site ?
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
14 nov. 2009 à 11:20
ce n'est pas une volonté de protection ?
tenter d'empêcher qu'on ne copie votre js ?
si c'est le cas : oubliez !!
il faut que vous compreniez une chose :
une page web va s'exécuter sur le micro du client,
pour ce faire tout son contenu ( html, javascript,
images... ) doit y être copié, dans, effectivement
ce qu'on appelle, le cache. aucun moyen de l'empêcher.
ah si.... ne pas faire de javascript, ce n'est
jamais obligatoire.
avec un simple Editeur de textes on peut
d'ailleurs probablement aller le lire sur
votre site ! non ?
0
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
14 nov. 2009 à 16:52
Un fichier .htaccess fonctionne avec un serveur Apache. Si tu travailles en local, il faut que tu installes un serveur Apache sur ton ordinateur et que tu mettes ton site dedans. Comme je l'ai dis précédemment ceci doit être mis côté serveur, puisque seul le serveur peut envoyer de telle entête pour dire au navigateur de ne pas mettre en cache.
0
bluemandfr Messages postés 55 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 16 mai 2013
19 nov. 2009 à 04:16
Bonjour à tous.

Merci de votre temps.

avec un simple Editeur de textes on peut
d'ailleurs probablement aller le lire sur
votre site ! non ?


Non. J'ai créé un mécanisme spécial où vous ne pouvez y accéder. Mais ce n'est pas le problème. Comme je l'ai indiqué, je cherche à ce que le script n'aille pas dans le répertoire temporaire du navigateur. Ma question : est-ce possible de réaliser cela ? Et si oui, comment ?

Merci.

BlueMan.
0
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
19 nov. 2009 à 05:02
Tout ce que tu peux faire, c'est indiquer au navigateur qu'un fichier en particulier ne soit pas mis en cache (conserver après utilisation). Pour le reste, le navigateur gère comme il le veut le contenu qu'il reçoit.

D'ailleurs, il n'existe aucun mécanisme aussi "spécial" qu'il soit pour empêcher d'avoir accès au contenu qui est dans tes fichiers javascript, html ou css. C'est de façon théorique et pratique impossible. C'est comme si tu envoyais du contenu par la poste et que tu voulais que ce contenu ne soit pas garder, analyser ou lu. La personne à l'autre bout peut faire ce qu'elle veut du contenu et c'est la même chose pour le web.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
19 nov. 2009 à 06:35
>>J'ai créé un mécanisme spécial où vous ne pouvez y accéder
ah ? j'aimerais bien voir ça, tiens...
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
19 nov. 2009 à 06:41
>>est-ce possible de réaliser cela ?
j'ai omis de répondre, je pense
l'avoir déjà fait, vous ne pouvez
rien faire à ce niveau là.
encore une fois : il faut bien copier
la page vers le micro client.
vous ne pourrez pas empêcher qu'on
voit votre javascript ( pourquoi faire
d'ailleurs ! )
0
bluemandfr Messages postés 55 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 16 mai 2013
19 nov. 2009 à 17:35
Bonjour.

Tout ce que tu peux faire, c'est indiquer au navigateur qu'un fichier en particulier ne soit pas mis en cache


Comment faire cela ?

J'ai essayé le fichier .htacsess pour Apache avec ceci :

<Files *.js>
Header set Cache-Control "no-cache, must-revalidate"
Header set Pragma "no-cache"
</Files>


et cela ne marche pas...

Merci !

BlueMan.
0
bluemandfr Messages postés 55 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 16 mai 2013
13 nov. 2009 à 17:19
Bonjour Open Source.
Merci de ton aide.

Questions subsidiaires :

- Tu parle d'unfichier .htaccess : quel est son nom ? Je n'arrive pas à créer une fichier .htaccess sans nom.

- As-tu uen autre méthode qui ferait la même chose, car j'ai pleins de scripts et leur nom chnage tout le temps : les déclarer est lourdingue..

Merci !

BlueMan.
-1
Rejoignez-nous