Only cache the calculated body of a view.

This simplifies the code, and loses no time.
This commit is contained in:
Aldo Cortesi 2012-04-02 11:01:38 +12:00
parent 2df2fe0e4c
commit c6ee813479
1 changed files with 16 additions and 13 deletions

View File

@ -93,7 +93,7 @@ class FlowViewHeader(common.WWrap):
class CallbackCache:
@utils.LRUCache(100)
@utils.LRUCache(200)
def _callback(self, method, *args, **kwargs):
return getattr(self.obj, method)(*args, **kwargs)
@ -124,14 +124,25 @@ class FlowView(common.WWrap):
else:
self.view_request()
def _cached_conn_text(self, content, hdrItems, viewmode):
def _cached_content_view(self, viewmode, hdrItems, content):
return contentview.get_content_view(viewmode, hdrItems, content)
def content_view(self, viewmode, conn):
return cache.callback(
self, "_cached_content_view",
viewmode,
tuple(tuple(i) for i in conn.headers.lst),
conn.content,
)
def _conn_text(self, conn, viewmode):
txt = common.format_keyvals(
[(h+":", v) for (h, v) in hdrItems],
[(h+":", v) for (h, v) in conn.headers.lst],
key = "header",
val = "text"
)
if content:
msg, body = contentview.get_content_view(viewmode, hdrItems, content)
if conn.content:
msg, body = self.content_view(viewmode, conn)
title = urwid.AttrWrap(urwid.Columns([
urwid.Text(
[
@ -186,14 +197,6 @@ class FlowView(common.WWrap):
)
return f
def _conn_text(self, conn, viewmode):
return cache.callback(
self, "_cached_conn_text",
conn.content,
tuple(tuple(i) for i in conn.headers.lst),
viewmode
)
def view_request(self):
self.state.view_flow_mode = common.VIEW_FLOW_REQUEST
body = self._conn_text(