[Twisted-Python] Surprises in twisted.web.woven
Phillip J. Eby
pje at telecommunity.com
Mon Aug 4 14:14:51 EDT 2003
At 12:28 PM 8/4/03 -0500, Glyph Lefkowitz wrote:
>On Monday, August 4, 2003, at 07:13 AM, Tim Allen wrote:
>>Is there any reason why white-space preserving should not always be on?
>Believe it or not, it's a bottleneck.
>In order to preserve whitespace, you have to create a bunch of extra Node
>and str objects, which consume a not-inconsiderable set of resources for,
>let's say, a directory full of reasonably sized Woven templates.
>This cost is exacerbated by the fact that woven copies and inspects the
>entire tree of DOM objects on every page render.
You might be interested in the technique I use for
peak.web.templates. First, my DOMlet objects aren't even as sophisticated
as Twisted's microdom; they are just objects that cwrite unicode
streams. Second, each node has a 'staticText' attribute that can be either
a unicode value or None. So, parent nodes can glom together adjacent nodes
with staticText. Then, if that node only has static content, it defines
its own staticText attribute, so it can be glommed together with its peers,
by its parent. The net result is that a template, as a whole, consists of
dynamic nodes occasionally interrupted by a block of static text.
More information about the Twisted-Python