Olivier Grisel wrote:
MARFIL CEDRIC a écrit :
Bonjour,
Certains portlets de notre application sont mis en cache pour des
raisons de
performances. L'un d'entre eux représente une liste de liens (sous forme
d'onglets) qui sont accessibles à l'utilisateur connecté avec comme
clef de
cache 'user'. Mes questions sont donc les suivantes:
- Est-il possible d'invalider le cache pour cet utilisateur
particulier dans
le cas où ses droits changent ?
Roles locaux ?
Il est possible de surveiller des événements en particulier (voir le
code de CPSPortlets/CPSPortlets.py méthodes getCacheIndex et addEvent).
En particulier, le content portlet fonctionne comme ca et sa
configuration pourra servir d'exemple :
http://svn.nuxeo.org/trac/pub/browser/CPS3/products/CPSDefault/trunk/profiles/default/portlets.xml
- Notre application étant répartie sur plusieurs zClients, est-il
possible
de réaliser cette invalidation simultanément sur tous les zClients ?
Chaque client ZEO a son propre cache et à ma connaissance les caches
sont complétement indépendants des autres, de même que la gestion de
évennements.
Pour éviter ce genre de désagréments il faut utiliser un load balancer
qui gére l'affinité des requetes en surveillant le cookie __ac_name
par exemple. pound 1 ou 2 sait faire ca.
Il est possible d'attacher des événements à l'invalidation du cache. Le
contexte de l'événement peut aussi être pris en compte pour limiter la
couverture, cf event_in_folders (sur des répertoires donnés),
event_on_types (pour des types d'objets donnés) .. mais pas pour un
utilisateur donné.
donc si vous associez un évenement "event_ids:role_changed" au
parametres du cache portlet (c'est un exemple encore faut-il qu'il y ait
un évenement 'role_changed' qui soit émis) l'invalidation aura lieu
indépendemment de l'utilisateur pour qui le rôle a changé. Mais dans
votre cas cela devrait suffir?
/JM
_______________________________________________
cps-users-fr
Adresse de la liste : [email protected]
Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>