Hi everybody! When I was trying to fix portlets in Plone I was wondering why the render() method of my portlet actually gets called multiple times. After a bit of investigation I ended up in the Five product in browser/providerexpressions.py where provider expressions also seem to be called twice for each provider statement. The problem seems to be in Products/PageTemplates/Expressions.py in line 199/200 (in Zope 2.10.4): def evaluateStructure(self, expr): """ customized version in order to get rid of unicode errors for all and ever """ text = super(ZopeContext, self).evaluateStructure(expr) return self._handleText(text, expr) This construct seems to evaluate expr twice. One time in evaluateStructure() of the super class which is basically a call to self.evaluate(expr) (to be found in zope/tales/tales.py around line 713: def evaluateStructure(self, expr): return self.evaluate(expr) and then again in _handleText(): def _handleText(self, text, expr): text = self.evaluate(expr) ... I now tried to remove the evaluation of expr in handleText() and in a very simple test using ab on my site I got twice the speed! I might be missing something here of course but if every expression is evaluated twice then this is of course huge performance drain. And of course this fix was just a quick idea without much understanding of the underlying engine (e.g. not knowing if _handleText() is also called from somewhere else etc.) So any Page Template experts here who can confirm this? cheers, Christian -- Christian Scholz video blog: http://comlounge.tv COM.lounge blog: http://mrtopf.de/blog Luetticher Strasse 10 Skype: HerrTopf 52064 Aachen Homepage: http://comlounge.net Tel: +49 241 400 730 0 E-Mail cs@comlounge.net Fax: +49 241 979 00 850 IRC: MrTopf, Tao_T connect with me: http://mrtopf.de/connect