On Fri, Feb 18, 2005 at 07:31:51AM +0100, Andrea Arcangeli wrote:
And this below is the patch of caching branch from dialtone + my above incremental patch that speedup the rend.Page caching without changing the API at all, all against trunk (i.e. the code that's going online in a few more minutes ;).
sorry for yet another self followup but this bit from the caching branch was missing, it was a new file and I merged into trunk using patch instead of svn merge... Index: nevow/cache.py =================================================================== --- nevow/cache.py (revision 0) +++ nevow/cache.py (revision 0) @@ -0,0 +1,33 @@ +from time import time as now +from nevow import inevow + +class SiteCache(object): + __implements__ = inevow.ICache, + _content = {} + def __init__(self, original): + self.original = original + + def get(self, index, lifetime): + cached = self._content.get(index, None) + if cached is None: + return + if lifetime < 0: + return cached[1] + if cached[0] + lifetime > now(): + return cached[1] + + def set(self, toBeCached, *indexes): + _now = now() + for index in indexes: + self._content[index] = (_now, toBeCached) + + def clear(self, what): + if self._content.has_key(what): + self._content.pop(what) + for key in self._content.keys(): + if what in key: + self._content.pop(key) + +class SessionCache(SiteCache): + def __init__(self): + self._content = {}