You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-fr@cocoon.apache.org by Emmanuel FRANCISCO <e....@free.fr> on 2005/04/08 19:18:30 UTC

Aide au niveau du cache de cocoon

Bonjour ou Bonsoir  ;-)

   Je travaille avec Cocoon depuis 6 mois (donc je suis un petit 
nouveau), j'utilise cocoon 2.1.5 avec un support de Tomcat 5 sous un 
système exploitation (malheureusement pour moi) Windows 2000 serveur.

   Je m'occupe de faire des tris qui sont sorti en XML d'un serveur 
Lotus Notes Serveur, et je transforme en camenbert, des graphes,des PDFs 
,tableau excel et aussi des tableaux HTML pour interface web, mais le 
problème c'est que le traitement de données est vraiment long :-( , donc 
j'ai decidé d'utiliser le cache de cocoon mais bon je n'arrive pas à 
fonctionner ( surement je n'ai pas compri le fonctionnement du cache qui 
est expliqué sur le site de http://cocoon.apache.org ) et je voudrais 
savoir  si on est obligé d'utiliser un proxy? Savoir comment fonctionne 
exactement le système de cache ? Et des petits conseils!

---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Aide au niveau du cache de cocoon

Posted by Sylvain Wallez <sy...@apache.org>.
Frédéric Glorieux wrote:

>
> Je constate que c'est à toi que l'on doit cette page qui m'a aussi 
> beaucoup aider
> <http://wiki.apache.org/cocoon/XSPCachingWithCocoonHEAD>
> même si cela date un peu
>
>> En fait, techniquement c'est l'objet Source qui définit la validité, 
>> il y a peut-être un moyen encore plus simple...
>
>
> L'idéal est que la source sache dire si elle a changé ?
> Là évidemment, cela dépend pour beaucoup de ce qu'il y a derrière
>
> <map:part src="URL_SERVEUR/sourceXML" />
>
> Sur des fichiers, c'est très sûr et standardisé ( et cocoon a tout 
> l'équipement :o), j'utilise pour un générateur.
>
> Pour un SQL, cela dépends beaucoup du modèle de données. Dans certains 
> cas, cela peut être rentable que le getValidity résulte d'une requête 
> courte sur certains timestamp bien choisis.


Une technique efficace pour les bases de données, dans le cas de la 
publication, est de considérer la période de mise à jour de la base. On 
a par exemple un projet actuellement ou la base du site web est une 
copie de la base du back-office et est mise à jour en batch la nuit. 
Dans ce cas, on peut simplement utiliser une validité basée sur le temps 
(càd "c'est valable jusqu'à ce soir minuit"). Super simple et super 
efficace, mais évidemment pas applicable à tous les cas de figure.

Sylvain

-- 
Sylvain Wallez                        Anyware Technologies
http://apache.org/~sylvain            http://anyware-tech.com
Apache Software Foundation Member     Research & Technology Director


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Aide au niveau du cache de cocoon

Posted by Bertrand Delacretaz <bd...@apache.org>.
Le 9 avr. 05, à 14:50, Emmanuel FRANCISCO a écrit :

> Tu peux m' expliquer un peu??
>
>> Oui, l'idéal si on acquiert les données par HTTP est d'utiliser les 
>> mécanismes standard (HEAD, if-modified-since, etc) pour que la source 
>> puisse dire si les données ont changé on pas.
>>
>> Je ne sais pas si les objets Source qu'on utilise (qui viennent de 
>> Avalon sauf erreur) gèrent ça correctement avec HTTP, il faudrait 
>> vérifier.
>>
> Car je suis un peu perdu !!!!

La gestion de caches par HTTP est définie dans 
http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13, c'est ce 
qui est utilisé par exemple par mod_cache lorsqu'il est en front-end 
d'une autre application.

Concernant l'objet Source (que Cocoon utilise pour accéder à ton 
serveur d'origine par HTTP), je me demandais s'il traduit les infos 
fournies par HTTP sous la forme qui est utilisée par le cache de 
Cocoon.

-Bertrand

Re: Aide au niveau du cache de cocoon

Posted by Emmanuel FRANCISCO <e....@free.fr>.
Tu peux m' expliquer un peu??

> Oui, l'idéal si on acquiert les données par HTTP est d'utiliser les 
> mécanismes standard (HEAD, if-modified-since, etc) pour que la source 
> puisse dire si les données ont changé on pas.
>
> Je ne sais pas si les objets Source qu'on utilise (qui viennent de 
> Avalon sauf erreur) gèrent ça correctement avec HTTP, il faudrait 
> vérifier.
>
Car je suis un peu perdu !!!!

---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Aide au niveau du cache de cocoon

Posted by Bertrand Delacretaz <bd...@apache.org>.
Le 9 avr. 05, à 14:24, Frédéric Glorieux a écrit :
> ...L'idéal est que la source sache dire si elle a changé ?
> Là évidemment, cela dépend pour beaucoup de ce qu'il y a derrière..

Oui, l'idéal si on acquiert les données par HTTP est d'utiliser les 
mécanismes standard (HEAD, if-modified-since, etc) pour que la source 
puisse dire si les données ont changé on pas.

Je ne sais pas si les objets Source qu'on utilise (qui viennent de 
Avalon sauf erreur) gèrent ça correctement avec HTTP, il faudrait 
vérifier.

> ...Dans certains cas, cela peut être rentable que le getValidity 
> résulte d'une requête courte sur certains timestamp bien choisis...

Oui, en pluggant ses propres objets Validity on peut implémenter tous 
les cas de figure imaginables, c'est très puissant.

-Bertrand

Re: Aide au niveau du cache de cocoon

Posted by Frédéric Glorieux <fr...@ajlsm.com>.
Je constate que c'est à toi que l'on doit cette page qui m'a aussi 
beaucoup aider
<http://wiki.apache.org/cocoon/XSPCachingWithCocoonHEAD>
même si cela date un peu

> En fait, techniquement c'est l'objet Source qui définit la validité, il 
> y a peut-être un moyen encore plus simple...

L'idéal est que la source sache dire si elle a changé ?
Là évidemment, cela dépend pour beaucoup de ce qu'il y a derrière

<map:part src="URL_SERVEUR/sourceXML" />

Sur des fichiers, c'est très sûr et standardisé ( et cocoon a tout 
l'équipement :o), j'utilise pour un générateur.

Pour un SQL, cela dépends beaucoup du modèle de données. Dans certains 
cas, cela peut être rentable que le getValidity résulte d'une requête 
courte sur certains timestamp bien choisis.



-- 
Frédéric Glorieux ("AJLSM", <http://ajlsm.com>)
"Transfolio" <http://transfolio.org>


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Aide au niveau du cache de cocoon

Posted by Bertrand Delacretaz <bd...@apache.org>.
Le 9 avr. 05, à 10:46, Emmanuel FRANCISCO a écrit :

> ...<map:aggregate element="liste">
> 	<map:part src="URL_SERVEUR/sourceXML" /> 	<map:part 
> src="URL_SERVEUR/sourceXML1"/> 	<map:part 
> src="URL_SERVEUR/sourceXML2"/>
...


> ...pour le moment il recupere toutes les données du serveur même s'ils 
> n'ont pas changé. Est ce que c'est possible avoir une petite exemple? 
> (car c'est toujours plus simple à comprendre avec un exemple :-) )...

Le mécanisme de cache interne est expliqué dans 
http://cocoon.apache.org/2.1/userdocs/concepts/caching.html

Et Il y a un exemple qui explique assez bien le mécanisme (clé + 
validité) dans le bloc XSP, voir 
src/blocks/xsp/samples/java/cacheable.xsp (attention, XSP n'est plus 
recommandé pour de nouveaux projets, mais ça explique le principe).

Dans ton cas, avec

> <map:part src="URL_SERVEUR/sourceXML" />

C'est le composant FileGenerator qui dit au pipeline combien de temps 
les données sont valides (voir 
src/java/org/apache/cocoon/generation/FileGenerator.java).

Un moyen simple de fixer une durée de validité configurable (pour 
autant que ça soit approprié - l'essentiel est bien sûr que ce soit le 
serveur d'origine qui dise combien de temps les données sont valides) 
serait de créer un générateur en héritant de FileGenerator et en 
surchargeant la méthode getValidity pour retourner une constante 
configurable.

En fait, techniquement c'est l'objet Source qui définit la validité, il 
y a peut-être un moyen encore plus simple...

-Bertrand

Re: Aide au niveau du cache de cocoon

Posted by Emmanuel FRANCISCO <e....@free.fr>.
Je remercie Frédéric Glorieux pour ton explication mais il  y a quelque 
chose que j'ai du mal a comprendre :

> Par contre, pour votre générateur depuis votre base de données, cela 
> dépends beaucoup de ce que vous avez choisi, mais il faut à un endroit 
> que vous expliquiez sur quoi peut on construire une clé d'unicité de 
> ce qui est généré, et qu'est-ce qui indique que cela a changer.

C'est vrai que à la sortie de mon générateur, l'arbre XML est énorme, 
car je recupere plus imformation de plus plusieur base de donnée grâce à :

<map:aggregate element="liste">
	<map:part src="URL_SERVEUR/sourceXML" /> 
	<map:part src="URL_SERVEUR/sourceXML1"/> 
	<map:part src="URL_SERVEUR/sourceXML2"/>
	<map:part src="URL_SERVEUR/sourceXML3"/>
	<map:part src="etc..."/>
	...
</map:aggregate>

Et c'est à ce niveau que le traitement dure longtemps. Comment je peux 
faire pour mettre le source en cache car pour le moment il recupere 
toutes les données du serveur même s'ils n'ont pas changé. Est ce que 
c'est possible avoir une petite exemple? (car c'est toujours plus simple 
à comprendre avec un exemple :-) )

Je suis vraiment désolé mais à ce niveau, je ne comprends pas grand 
chose sniff sniff sniff ....

 


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Aide au niveau du cache de cocoon

Posted by Frédéric Glorieux <fr...@ajlsm.com>.
> Donc ça sert à rien si j'utilise un serveur proxy alors????

Si, mais d'une autre manière.

Un apache mod_proxy mod_cache vous permet d'assurer la réponse frontale 
sur le web. Cela sert surtout pour faire face à une grosse demande, pour 
laquelle Apache ne redemande pas à chaque fois à votre appli cocoon ce 
qu'elle a à répondre. Notez que sans configuration et tests 
particuliers, la cache Apache est réglée sur un délai, encore difficile 
qu'il se raffraîchisse selon le besoin.

Ceci n'empêche pas votre appli cocoon d'être bien "tuyautée", car alors, 
la cache cocoon est entièrement optimisée pour ne regénérer que ce dont 
elle a besoin.

Autrement dit, pour une simple page d'accueil, vous pourriez avoir des 
couches du genre

cocoon direct, première génération
   1mn (j'ai le cas sur une appli)
cocoon direct, deuxième appel, si cachable
   10ms (voir access.log ou le bloc profiler)
10 000 requête concurentes sur Apache
   Bien configuré, Apache se débrouille très bien, c'est son métier,
   on peut lui dire d'aller voir cocoon toutes les minutes
   pour voir si la page a changé


-- 
Frédéric Glorieux ("AJLSM", <http://ajlsm.com>)



---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Aide au niveau du cache de cocoon

Posted by Bertrand Delacretaz <bd...@apache.org>.
Le 9 avr. 05, à 12:40, Emmanuel FRANCISCO a écrit :

> Donc ça sert à rien si j'utilise un serveur proxy alors????

Un cache proxy (genre mod_cache) entre Cocoon et le serveur d'origine 
pourrait aider, en diminuant le nombre de requêtes au serveur 
d'origine. Si ce serveur est la cause de la lenteur, ça fera une grande 
différence.

Par contre, Cocoon fera quand même à chaque fois la requête au proxy. 
Cette solution n'est donc pas optimale mais pourrait être suffisante.

Note que la mise en place d'un proxy mod_cache avec un temps de 
validité fixe est simple, voir les configs avec ExpiresDefault au bas 
de http://wiki.apache.org/cocoon/ControllingModCache.

-Bertrand

Re: Aide au niveau du cache de cocoon

Posted by Emmanuel FRANCISCO <e....@free.fr>.
Donc ça sert à rien si j'utilise un serveur proxy alors????

---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Aide au niveau du cache de cocoon

Posted by Bertrand Delacretaz <bd...@apache.org>.
Le 9 avr. 05, à 12:03, Frédéric Glorieux a écrit :

> ...Ouf, je n'ai pas dis de bêtises...

Et même si c'était le cas, ce ne serait pas un problème. Les seuls qui 
n'en disent jamais sont ceux qui ne disent rien ;-)

-Bertrand

Re: Aide au niveau du cache de cocoon

Posted by Frédéric Glorieux <fr...@ajlsm.com>.
>> Diificile d'oser une opinion sous le regard du maître (Sylvain Wallez) 
>> mais tout de même

> Exactement.

Ouf, je n'ai pas dis de bêtises.

-- 
Frédéric Glorieux ("AJLSM", <http://ajlsm.com>)



---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Aide au niveau du cache de cocoon

Posted by Sylvain Wallez <sy...@apache.org>.
Frédéric Glorieux wrote:

>
>> Bonjour ou Bonsoir  ;-)
>>
>>   Je travaille avec Cocoon depuis 6 mois (donc je suis un petit 
>> nouveau), j'utilise cocoon 2.1.5 avec un support de Tomcat 5 sous un 
>> système exploitation (malheureusement pour moi) Windows 2000 serveur.
>>
>>   Je m'occupe de faire des tris qui sont sorti en XML d'un serveur 
>> Lotus Notes Serveur, et je transforme en camenbert, des graphes,des 
>> PDFs ,tableau excel et aussi des tableaux HTML pour interface web, 
>> mais le problème c'est que le traitement de données est vraiment long 
>> :-( , donc j'ai decidé d'utiliser le cache de cocoon mais bon je 
>> n'arrive pas à fonctionner ( surement je n'ai pas compri le 
>> fonctionnement du cache qui est expliqué sur le site de 
>> http://cocoon.apache.org ) et je voudrais savoir  si on est obligé 
>> d'utiliser un proxy? Savoir comment fonctionne exactement le système 
>> de cache ? Et des petits conseils!
>
>
> Diificile d'oser une opinion sous le regard du maître (Sylvain Wallez) 
> mais tout de même


Houla, attention : Cocoon est d'une part un développement communautaire, 
et d'autre part contient un nombre de lignes de code assez conséquent, 
divisé en "core" (le coeur en français) et en "blocks" qui répondent à 
des thématiques fonctionnelles particulières.

Si j'ai une connaissance assez poussée d'une bonne proportion de cet 
ensemble, surtout le "core", il y a toutefois des parties que je connais 
absolument pas !

Et puis au delà du code, il y aussi les projets qu'on réalise avec 
Cocoon, et qui apportent une connaissance de mise en oeuvre qui est 
aussi importante que la connaissance du fonctionnement de la mécanique. 
Là encore, personne n'est expert sur tout les cas d'applications.

C'est donc la réunion de tous ces savoirs au sein d'une communauté qui 
fait la vraie richesse du projet, et il ne faut pas avoir peur de 
participer. Si quelqu'un dit une bétise, on rectifiera poliment et sans 
jugement : il est normal de faire des erreurs sur le chemin de 
l'apprentissage.

> Le cache est en fait le comportement par défaut de ce que cocoon 
> génère ou transforme, sauf...
> s'il ne peut pas cacher. Et cela commence dès la source.
>
> Cocoon cache très bien des tuyaux qui partent d'un fichier, car le 
> moyen de s'informer s'il a changé est standard.
> Par contre, pour votre générateur depuis votre base de données, cela 
> dépends beaucoup de ce que vous avez choisi, mais il faut à un endroit 
> que vous expliquiez sur quoi peut on construire une clé d'unicité de 
> ce qui est généré, et qu'est-ce qui indique que cela a changer.
>
> Ensuite si les transformations ne dépendant que de fichiers (comme de 
> l'XSL), le reste du tuyau peut être mis en cache.


Exactement.

Sylvain

-- 
Sylvain Wallez                        Anyware Technologies
http://apache.org/~sylvain            http://anyware-tech.com
Apache Software Foundation Member     Research & Technology Director


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Aide au niveau du cache de cocoon

Posted by Frédéric Glorieux <fr...@ajlsm.com>.
> Bonjour ou Bonsoir  ;-)
> 
>   Je travaille avec Cocoon depuis 6 mois (donc je suis un petit 
> nouveau), j'utilise cocoon 2.1.5 avec un support de Tomcat 5 sous un 
> système exploitation (malheureusement pour moi) Windows 2000 serveur.
> 
>   Je m'occupe de faire des tris qui sont sorti en XML d'un serveur Lotus 
> Notes Serveur, et je transforme en camenbert, des graphes,des PDFs 
> ,tableau excel et aussi des tableaux HTML pour interface web, mais le 
> problème c'est que le traitement de données est vraiment long :-( , donc 
> j'ai decidé d'utiliser le cache de cocoon mais bon je n'arrive pas à 
> fonctionner ( surement je n'ai pas compri le fonctionnement du cache qui 
> est expliqué sur le site de http://cocoon.apache.org ) et je voudrais 
> savoir  si on est obligé d'utiliser un proxy? Savoir comment fonctionne 
> exactement le système de cache ? Et des petits conseils!

Diificile d'oser une opinion sous le regard du maître (Sylvain Wallez)
mais tout de même

Le cache est en fait le comportement par défaut de ce que cocoon génère
ou transforme, sauf...
s'il ne peut pas cacher. Et cela commence dès la source.

Cocoon cache très bien des tuyaux qui partent d'un fichier, car le moyen
de s'informer s'il a changé est standard.
Par contre, pour votre générateur depuis votre base de données, cela 
dépends beaucoup de ce que vous avez choisi, mais il faut à un endroit 
que vous expliquiez sur quoi peut on construire une clé d'unicité de ce 
qui est généré, et qu'est-ce qui indique que cela a changer.

Ensuite si les transformations ne dépendant que de fichiers (comme de 
l'XSL), le reste du tuyau peut être mis en cache.


-- 
Frédéric Glorieux ("AJLSM", <http://ajlsm.com>)




---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org