【发布时间】:2009-08-21 18:44:29
【问题描述】:
我已经为 Google AppEngine 编写了一个应用程序,我想利用 memcache API 来减少每个请求的 CPU 时间。我分析了应用程序,发现大部分 CPU 时间用于模板渲染和对数据存储的 API 调用,在与同事聊天后,我跳出(可能有点早?)得出的结论是缓存一个页面呈现的 HTML 块将显着减少每个请求的 CPU 时间。缓存模式非常简洁,但是 在哪里 放置这种缓存和驱逐逻辑的问题对我来说有点神秘。
例如,假设应用程序的主页有一个公告部分。此部分需要在以下时间重新渲染:
- 为帐户中的任何人首先阅读,
- 正在添加新公告,并且
- 一条旧公告被删除
在哪里放置evict_announcements_section_from_cache() 方法调用的一些选项:
- 在公告模型的
.delete()和.put()方法中 - 在RequestHandler的
.post()方法中 - 还有其他地方吗?
然后在 RequestHandler 的获取页面中,我可能会调用 get_announcements_section(),这将遵循标准的 memcache 模式(检查缓存,在未命中时添加到缓存,返回值)并将该 HTML 传递给该块的模板页面。
将缓存驱逐逻辑放在模型、控制器/请求处理程序或其他地方是典型的设计模式吗?理想情况下,我希望避免在代码中使用触手来驱逐逻辑。
【问题讨论】:
标签: python google-app-engine optimization caching memcached