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