Comment supprimer du cache un script .js ? [Résolu]

Signaler
Messages postés
55
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
16 mai 2013
-
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
-
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

Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
6
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.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
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
Messages postés
55
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
16 mai 2013

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.
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
6
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é.
Messages postés
55
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
16 mai 2013

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.
Messages postés
55
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
16 mai 2013

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.
Messages postés
55
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
16 mai 2013

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.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
et ??? pourquoi vouloir éviter de le mettre
dans le cache ???? si on peut 'forcer' à aller
le relire sur le site ?
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
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 ?
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
6
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.
Messages postés
55
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
16 mai 2013

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.
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
6
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.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
>>J'ai créé un mécanisme spécial où vous ne pouvez y accéder
ah ? j'aimerais bien voir ça, tiens...
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
>>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 ! )
Messages postés
55
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
16 mai 2013

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.