我已经为 Google AppEngine 编写了一个应用程序,我想利用 memcache API 来减少每个请求的 CPU 时间。我分析了应用程序,发现大部分 CPU 时间用于模板渲染和对数据存储的 API 调用,在与同事聊天后,我跳出(可能有点早?)得出的结论是缓存一个页面呈现的 HTML block 将显着减少每个请求的 CPU 时间。缓存模式非常简洁,但是将这种缓存和驱逐逻辑放在哪里的问题对我来说有点神秘。
例如,假设一个应用程序的主页有一个公告部分。这部分需要在以下之后重新渲染:
evict_announcements_section_from_cache()
放置位置的一些选项方法调用:.delete()
, 和 .put()
方法.post()
方法然后在 RequestHandler 的获取页面中,我可能会调用
get_announcements_section()
这将遵循标准的内存缓存模式(检查缓存,在未命中时添加到缓存,返回值)并将该 HTML 传递给该页面 block 的模板。将缓存驱逐逻辑放在模型、 Controller /请求处理程序或其他地方是典型的设计模式吗?理想情况下,我想避免在代码中使用触手来驱逐逻辑。
最佳答案
我在一个开源 Github 项目中就有这样一个装饰器:
http://github.com/jamslevy/gae_memoize/tree/master
它更深入一点,允许强制执行函数(当你想刷新缓存时)或强制本地缓存......这些正是我在我的应用程序中需要的东西,所以我将它们烘焙到我的memoize 装饰器。
关于python - 在 App Engine 应用程序中放置缓存驱逐逻辑的最佳位置在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1313626/