Недавно я обнаружил, что атрибуты объекта страницы в CherryPy сохраняются между запросов (и между клиентами). Поэтому мне интересно, имеет ли смысл хранить вывод страницы в таком атрибуте? Нравится:
class Page:
def default(self, pagenumber):
if pagenumber not in self.validpages:
return 'Page number not found'
try:
html = self.pageoutput[pagenumber]
except KeyError:
html = self.formatter(self.dbcall(pagenumber))
return html
default.exposed = True
def formatter(self, data):
html = # Formatting code here
return html
def dbcall(self, pagenumber):
data = # Database lookup code here
return data
Я знаю, что CherryPy кэширует запросы GET по умолчанию. В моих тестах, когда атрибут объекта был частью вывода и этот атрибут изменился, CherryPy обслуживал новое значение атрибута. Означает ли это, что вывод был только частично кэширован?
Для меня это было бы полезно, если бы вы обновляли self.pageoutput каждый раз, когда меняли базу данных. Единственная трудность, которую я мог себе представить, это если бы я хотел отобразить информацию, специфичную для пользователя. Что вы думаете?