Bonjour à tous,
J'ai un souci récurrent, lorsque je modifie un script déclaré externe
(<script src="machintruc.js">), ses effets DHTML ne sont visibles
qu'après réactualisation de la page Web appelante. C'est la conséquence
indésirable et secondaire du caching côté client.
Je cherche donc une solution intermédiaire.
Avez-vous quelque idée, ou pratique déjà utilisée en production ?
Bonjour à tous,
J'ai un souci récurrent, lorsque je modifie un script déclaré externe
(<script src="machintruc.js">), ses effets DHTML ne sont visibles
qu'après réactualisation de la page Web appelante. C'est la conséquence
indésirable et secondaire du caching côté client.
Je cherche donc une solution intermédiaire.
Avez-vous quelque idée, ou pratique déjà utilisée en production ?
Bonjour à tous,
J'ai un souci récurrent, lorsque je modifie un script déclaré externe
(<script src="machintruc.js">), ses effets DHTML ne sont visibles
qu'après réactualisation de la page Web appelante. C'est la conséquence
indésirable et secondaire du caching côté client.
Je cherche donc une solution intermédiaire.
Avez-vous quelque idée, ou pratique déjà utilisée en production ?
Le 11/24/08 11:37 AM, Pascal PONCET a écrit :
Je cherche donc une solution intermédiaire.
Avez-vous quelque idée, ou pratique déjà utilisée en production ?
Le 11/24/08 11:37 AM, Pascal PONCET a écrit :
Je cherche donc une solution intermédiaire.
Avez-vous quelque idée, ou pratique déjà utilisée en production ?
Le 11/24/08 11:37 AM, Pascal PONCET a écrit :
Je cherche donc une solution intermédiaire.
Avez-vous quelque idée, ou pratique déjà utilisée en production ?
J'ai un souci récurrent, lorsque je modifie un script déclaré externe
(<script src="machintruc.js">), ses effets DHTML ne sont visibles
qu'après réactualisation de la page Web appelante. C'est la conséquence
indésirable et secondaire du caching côté client.
Or, cette réactualisation ne se fait, je crois, que de 2 façons : soit
volontairement par l'internaute (bouton "actualiser" ou "recharger"),
soit après réouverture du navigateur. Sans compter le cache du proxy FAI
qui, lui, n'est pas gérable.
J'ai bien envisagé la solution de passer le script par PHP (<script
src="machintruc.php">) en déclarant les headers adéquat pour inhiber les
caches, mais je perd définitivement l'avantage du caching dans ce cas.
Je cherche donc une solution intermédiaire.
J'ai un souci récurrent, lorsque je modifie un script déclaré externe
(<script src="machintruc.js">), ses effets DHTML ne sont visibles
qu'après réactualisation de la page Web appelante. C'est la conséquence
indésirable et secondaire du caching côté client.
Or, cette réactualisation ne se fait, je crois, que de 2 façons : soit
volontairement par l'internaute (bouton "actualiser" ou "recharger"),
soit après réouverture du navigateur. Sans compter le cache du proxy FAI
qui, lui, n'est pas gérable.
J'ai bien envisagé la solution de passer le script par PHP (<script
src="machintruc.php">) en déclarant les headers adéquat pour inhiber les
caches, mais je perd définitivement l'avantage du caching dans ce cas.
Je cherche donc une solution intermédiaire.
J'ai un souci récurrent, lorsque je modifie un script déclaré externe
(<script src="machintruc.js">), ses effets DHTML ne sont visibles
qu'après réactualisation de la page Web appelante. C'est la conséquence
indésirable et secondaire du caching côté client.
Or, cette réactualisation ne se fait, je crois, que de 2 façons : soit
volontairement par l'internaute (bouton "actualiser" ou "recharger"),
soit après réouverture du navigateur. Sans compter le cache du proxy FAI
qui, lui, n'est pas gérable.
J'ai bien envisagé la solution de passer le script par PHP (<script
src="machintruc.php">) en déclarant les headers adéquat pour inhiber les
caches, mais je perd définitivement l'avantage du caching dans ce cas.
Je cherche donc une solution intermédiaire.
Pascal PONCET wrote:J'ai un souci récurrent, lorsque je modifie un script déclaré externe
(<script src="machintruc.js">), ses effets DHTML ne sont visibles
qu'après réactualisation de la page Web appelante. C'est la conséquence
indésirable et secondaire du caching côté client.
Or, cette réactualisation ne se fait, je crois, que de 2 façons : soit
volontairement par l'internaute (bouton "actualiser" ou "recharger"),
soit après réouverture du navigateur. Sans compter le cache du proxy FAI
qui, lui, n'est pas gérable.
J'ai bien envisagé la solution de passer le script par PHP (<script
src="machintruc.php">) en déclarant les headers adéquat pour inhiber les
caches, mais je perd définitivement l'avantage du caching dans ce cas.
Je cherche donc une solution intermédiaire.
Pourriez-vous détailler, je ne comprend pas ce que vous décrivez ?
En attendant votre réponse, le document de référence pour moi sur le
cache :
http://www.mnot.net/cache_docs/index.fr.html
Pascal PONCET wrote:
J'ai un souci récurrent, lorsque je modifie un script déclaré externe
(<script src="machintruc.js">), ses effets DHTML ne sont visibles
qu'après réactualisation de la page Web appelante. C'est la conséquence
indésirable et secondaire du caching côté client.
Or, cette réactualisation ne se fait, je crois, que de 2 façons : soit
volontairement par l'internaute (bouton "actualiser" ou "recharger"),
soit après réouverture du navigateur. Sans compter le cache du proxy FAI
qui, lui, n'est pas gérable.
J'ai bien envisagé la solution de passer le script par PHP (<script
src="machintruc.php">) en déclarant les headers adéquat pour inhiber les
caches, mais je perd définitivement l'avantage du caching dans ce cas.
Je cherche donc une solution intermédiaire.
Pourriez-vous détailler, je ne comprend pas ce que vous décrivez ?
En attendant votre réponse, le document de référence pour moi sur le
cache :
http://www.mnot.net/cache_docs/index.fr.html
Pascal PONCET wrote:J'ai un souci récurrent, lorsque je modifie un script déclaré externe
(<script src="machintruc.js">), ses effets DHTML ne sont visibles
qu'après réactualisation de la page Web appelante. C'est la conséquence
indésirable et secondaire du caching côté client.
Or, cette réactualisation ne se fait, je crois, que de 2 façons : soit
volontairement par l'internaute (bouton "actualiser" ou "recharger"),
soit après réouverture du navigateur. Sans compter le cache du proxy FAI
qui, lui, n'est pas gérable.
J'ai bien envisagé la solution de passer le script par PHP (<script
src="machintruc.php">) en déclarant les headers adéquat pour inhiber les
caches, mais je perd définitivement l'avantage du caching dans ce cas.
Je cherche donc une solution intermédiaire.
Pourriez-vous détailler, je ne comprend pas ce que vous décrivez ?
En attendant votre réponse, le document de référence pour moi sur le
cache :
http://www.mnot.net/cache_docs/index.fr.html
Pourriez-vous détailler, je ne comprend pas ce que vous décrivez ?
Pourriez-vous détailler, je ne comprend pas ce que vous décrivez ?
Pourriez-vous détailler, je ne comprend pas ce que vous décrivez ?
Pierre Goiffon a écrit :Pourriez-vous détailler, je ne comprend pas ce que vous décrivez ?
Je reformule :
1. J'ai une page "index.php" qui, dans sa sortie Html, fait référence à
un script externe (<script src="myscript.js">).
2. Un mois plus tard, je modifie le script "myscript.js" avec des effets
visible (DHTML) sur la sortie Html de "index.php".
3. Certains internautes ne voient pas les effets de ces modifications,
car ils ont conservé en cache l'ancienne version de "myscript.js".
Comment éviter la mise en cache dans ce cas, tout en conservant le
bénéfice habituel du caching client ?
Autrement dit, comment forcer la revalidation du cache (+ proxy) pour un
script modifié ?
Voici les informations de cache que j'ai enregistrées deux fois de suite
sur ce script (en rechargeant la page "index.php") :
-------------------------------------------------
Last Modified Mon Nov 24 2008 18:56:21 GMT+0100
Last Fetched Mon Nov 24 2008 18:56:21 GMT+0100
Expires Tue Nov 25 2008 06:49:46 GMT+0100
-------------------------------------------------
Last Modified Mon Nov 24 2008 19:12:03 GMT+0100
Last Fetched Mon Nov 24 2008 19:12:03 GMT+0100
Expires Tue Nov 25 2008 07:07:02 GMT+0100
-------------------------------------------------
On voit bien que le cache positionne automatiquement une date
d'expiration au lendemain (en fait, environ 12h plus tard).
Donc, si je modifie mon script, je ne verrais ses effets que le
lendemain. D'où mon problème !
Pierre Goiffon a écrit :
Pourriez-vous détailler, je ne comprend pas ce que vous décrivez ?
Je reformule :
1. J'ai une page "index.php" qui, dans sa sortie Html, fait référence à
un script externe (<script src="myscript.js">).
2. Un mois plus tard, je modifie le script "myscript.js" avec des effets
visible (DHTML) sur la sortie Html de "index.php".
3. Certains internautes ne voient pas les effets de ces modifications,
car ils ont conservé en cache l'ancienne version de "myscript.js".
Comment éviter la mise en cache dans ce cas, tout en conservant le
bénéfice habituel du caching client ?
Autrement dit, comment forcer la revalidation du cache (+ proxy) pour un
script modifié ?
Voici les informations de cache que j'ai enregistrées deux fois de suite
sur ce script (en rechargeant la page "index.php") :
-------------------------------------------------
Last Modified Mon Nov 24 2008 18:56:21 GMT+0100
Last Fetched Mon Nov 24 2008 18:56:21 GMT+0100
Expires Tue Nov 25 2008 06:49:46 GMT+0100
-------------------------------------------------
Last Modified Mon Nov 24 2008 19:12:03 GMT+0100
Last Fetched Mon Nov 24 2008 19:12:03 GMT+0100
Expires Tue Nov 25 2008 07:07:02 GMT+0100
-------------------------------------------------
On voit bien que le cache positionne automatiquement une date
d'expiration au lendemain (en fait, environ 12h plus tard).
Donc, si je modifie mon script, je ne verrais ses effets que le
lendemain. D'où mon problème !
Pierre Goiffon a écrit :Pourriez-vous détailler, je ne comprend pas ce que vous décrivez ?
Je reformule :
1. J'ai une page "index.php" qui, dans sa sortie Html, fait référence à
un script externe (<script src="myscript.js">).
2. Un mois plus tard, je modifie le script "myscript.js" avec des effets
visible (DHTML) sur la sortie Html de "index.php".
3. Certains internautes ne voient pas les effets de ces modifications,
car ils ont conservé en cache l'ancienne version de "myscript.js".
Comment éviter la mise en cache dans ce cas, tout en conservant le
bénéfice habituel du caching client ?
Autrement dit, comment forcer la revalidation du cache (+ proxy) pour un
script modifié ?
Voici les informations de cache que j'ai enregistrées deux fois de suite
sur ce script (en rechargeant la page "index.php") :
-------------------------------------------------
Last Modified Mon Nov 24 2008 18:56:21 GMT+0100
Last Fetched Mon Nov 24 2008 18:56:21 GMT+0100
Expires Tue Nov 25 2008 06:49:46 GMT+0100
-------------------------------------------------
Last Modified Mon Nov 24 2008 19:12:03 GMT+0100
Last Fetched Mon Nov 24 2008 19:12:03 GMT+0100
Expires Tue Nov 25 2008 07:07:02 GMT+0100
-------------------------------------------------
On voit bien que le cache positionne automatiquement une date
d'expiration au lendemain (en fait, environ 12h plus tard).
Donc, si je modifie mon script, je ne verrais ses effets que le
lendemain. D'où mon problème !
essayer des trucs du genre :
function reloadJS_1() {
var s = document.getElementsByTagName('SCRIPT')[0];
s.src = s.src + '?'+encodeURI(new Date());
}
essayer des trucs du genre :
function reloadJS_1() {
var s = document.getElementsByTagName('SCRIPT')[0];
s.src = s.src + '?'+encodeURI(new Date());
}
essayer des trucs du genre :
function reloadJS_1() {
var s = document.getElementsByTagName('SCRIPT')[0];
s.src = s.src + '?'+encodeURI(new Date());
}
SAM a écrit :essayer des trucs du genre :
function reloadJS_1() {
var s = document.getElementsByTagName('SCRIPT')[0];
s.src = s.src + '?'+encodeURI(new Date());
}
Ça ne m'était pas venu de suite à l'esprit, mais la solution la plus
simple est effectivement de rajouter un paramètre en GET dans l'appel au
fichier de script :
<script src="myscript.js?version=2.0"></script>
Il suffit de changer la valeur du paramètre pour que le cache demande
une revalidation.
En plus, j'ai trouvé une cohérence sympathique, je crois, en donnant au
paramètre le numéro de version du script !
(d'ailleurs, le script peut même récupérer cette valeur par
"location.search")
SAM a écrit :
essayer des trucs du genre :
function reloadJS_1() {
var s = document.getElementsByTagName('SCRIPT')[0];
s.src = s.src + '?'+encodeURI(new Date());
}
Ça ne m'était pas venu de suite à l'esprit, mais la solution la plus
simple est effectivement de rajouter un paramètre en GET dans l'appel au
fichier de script :
<script src="myscript.js?version=2.0"></script>
Il suffit de changer la valeur du paramètre pour que le cache demande
une revalidation.
En plus, j'ai trouvé une cohérence sympathique, je crois, en donnant au
paramètre le numéro de version du script !
(d'ailleurs, le script peut même récupérer cette valeur par
"location.search")
SAM a écrit :essayer des trucs du genre :
function reloadJS_1() {
var s = document.getElementsByTagName('SCRIPT')[0];
s.src = s.src + '?'+encodeURI(new Date());
}
Ça ne m'était pas venu de suite à l'esprit, mais la solution la plus
simple est effectivement de rajouter un paramètre en GET dans l'appel au
fichier de script :
<script src="myscript.js?version=2.0"></script>
Il suffit de changer la valeur du paramètre pour que le cache demande
une revalidation.
En plus, j'ai trouvé une cohérence sympathique, je crois, en donnant au
paramètre le numéro de version du script !
(d'ailleurs, le script peut même récupérer cette valeur par
"location.search")
Ça ne m'était pas venu de suite à l'esprit, mais la solution la plus
simple est effectivement de rajouter un paramètre en GET dans l'appel au
fichier de script :
<script src="myscript.js?version=2.0"></script>
Je ne comprends rien à ton truc !
Je croyais que la page était bloquée dans le cache pendant 12 heures ?
Que va-ce changer au problème d'avoir une légère variation de son code ?
Je ne sais pas si lors du rafraichissement en cache d'un fichier html,
le navigateur rafraichit aussi tout ce qui y est embarqué (images,
scripts, etc.) ou seulement les éléments y modifiés (par leur seule date
de modification).
Dans le tutoriel de la mise en cache je n'ai pas bien compris si les
échanges navigateur/serveur permettent de rafraichir une page lorsque sa
date d'Expire n'est pas atteinte alors que son last-modified a changé.
Ça ne m'était pas venu de suite à l'esprit, mais la solution la plus
simple est effectivement de rajouter un paramètre en GET dans l'appel au
fichier de script :
<script src="myscript.js?version=2.0"></script>
Je ne comprends rien à ton truc !
Je croyais que la page était bloquée dans le cache pendant 12 heures ?
Que va-ce changer au problème d'avoir une légère variation de son code ?
Je ne sais pas si lors du rafraichissement en cache d'un fichier html,
le navigateur rafraichit aussi tout ce qui y est embarqué (images,
scripts, etc.) ou seulement les éléments y modifiés (par leur seule date
de modification).
Dans le tutoriel de la mise en cache je n'ai pas bien compris si les
échanges navigateur/serveur permettent de rafraichir une page lorsque sa
date d'Expire n'est pas atteinte alors que son last-modified a changé.
Ça ne m'était pas venu de suite à l'esprit, mais la solution la plus
simple est effectivement de rajouter un paramètre en GET dans l'appel au
fichier de script :
<script src="myscript.js?version=2.0"></script>
Je ne comprends rien à ton truc !
Je croyais que la page était bloquée dans le cache pendant 12 heures ?
Que va-ce changer au problème d'avoir une légère variation de son code ?
Je ne sais pas si lors du rafraichissement en cache d'un fichier html,
le navigateur rafraichit aussi tout ce qui y est embarqué (images,
scripts, etc.) ou seulement les éléments y modifiés (par leur seule date
de modification).
Dans le tutoriel de la mise en cache je n'ai pas bien compris si les
échanges navigateur/serveur permettent de rafraichir une page lorsque sa
date d'Expire n'est pas atteinte alors que son last-modified a changé.
Le 25/11/2008 10:50, SAM a écrit :Ça ne m'était pas venu de suite à l'esprit, mais la solution la plus
simple est effectivement de rajouter un paramètre en GET dans l'appel au
fichier de script :
<script src="myscript.js?version=2.0"></script>
Je ne comprends rien à ton truc !
Je croyais que la page était bloquée dans le cache pendant 12 heures ?
Moi, ce que j'avais compris, c'était que la page HTML était bien
rechargée, mais pas le script myscript.js.
Que va-ce changer au problème d'avoir une légère variation de son code ?
L'URL du script étant différente, ni le navigateur ni un éventuel proxy
ne peut la retrouver dans le cache. C'est comme si son nom avait changé,
par exemple myscript-v2.js.
Je ne sais pas si lors du rafraichissement en cache d'un fichier html,
le navigateur rafraichit aussi tout ce qui y est embarqué (images,
scripts, etc.) ou seulement les éléments y modifiés (par leur seule date
de modification).
Non, c'est indépendant. La requête HTTP pour le fichier JavaScript est
indépendante de celle pour le fichier HTML.
Dans le tutoriel de la mise en cache je n'ai pas bien compris si les
échanges navigateur/serveur permettent de rafraichir une page lorsque sa
date d'Expire n'est pas atteinte alors que son last-modified a changé.
Je passe.
Le 25/11/2008 10:50, SAM a écrit :
Ça ne m'était pas venu de suite à l'esprit, mais la solution la plus
simple est effectivement de rajouter un paramètre en GET dans l'appel au
fichier de script :
<script src="myscript.js?version=2.0"></script>
Je ne comprends rien à ton truc !
Je croyais que la page était bloquée dans le cache pendant 12 heures ?
Moi, ce que j'avais compris, c'était que la page HTML était bien
rechargée, mais pas le script myscript.js.
Que va-ce changer au problème d'avoir une légère variation de son code ?
L'URL du script étant différente, ni le navigateur ni un éventuel proxy
ne peut la retrouver dans le cache. C'est comme si son nom avait changé,
par exemple myscript-v2.js.
Je ne sais pas si lors du rafraichissement en cache d'un fichier html,
le navigateur rafraichit aussi tout ce qui y est embarqué (images,
scripts, etc.) ou seulement les éléments y modifiés (par leur seule date
de modification).
Non, c'est indépendant. La requête HTTP pour le fichier JavaScript est
indépendante de celle pour le fichier HTML.
Dans le tutoriel de la mise en cache je n'ai pas bien compris si les
échanges navigateur/serveur permettent de rafraichir une page lorsque sa
date d'Expire n'est pas atteinte alors que son last-modified a changé.
Je passe.
Le 25/11/2008 10:50, SAM a écrit :Ça ne m'était pas venu de suite à l'esprit, mais la solution la plus
simple est effectivement de rajouter un paramètre en GET dans l'appel au
fichier de script :
<script src="myscript.js?version=2.0"></script>
Je ne comprends rien à ton truc !
Je croyais que la page était bloquée dans le cache pendant 12 heures ?
Moi, ce que j'avais compris, c'était que la page HTML était bien
rechargée, mais pas le script myscript.js.
Que va-ce changer au problème d'avoir une légère variation de son code ?
L'URL du script étant différente, ni le navigateur ni un éventuel proxy
ne peut la retrouver dans le cache. C'est comme si son nom avait changé,
par exemple myscript-v2.js.
Je ne sais pas si lors du rafraichissement en cache d'un fichier html,
le navigateur rafraichit aussi tout ce qui y est embarqué (images,
scripts, etc.) ou seulement les éléments y modifiés (par leur seule date
de modification).
Non, c'est indépendant. La requête HTTP pour le fichier JavaScript est
indépendante de celle pour le fichier HTML.
Dans le tutoriel de la mise en cache je n'ai pas bien compris si les
échanges navigateur/serveur permettent de rafraichir une page lorsque sa
date d'Expire n'est pas atteinte alors que son last-modified a changé.
Je passe.