我已经为googleappengine编写了一个应用程序,我想利用memcacheapi来减少每个请求的CPU时间。我对应用程序进行了分析,发现有很大一部分CPU时间都在模板呈现和对数据存储的API调用中,在与一位同事聊天后,我跳了起来(可能有点早?)得出的结论是,缓存页面呈现的HTML块将显著减少每个请求的CPU时间。缓存模式非常干净,但是将缓存和逐出的逻辑放在哪里这个问题对我来说有点神秘。
例如,假设一个应用程序的主页上有一个公告部分。此部分需要在以下时间后重新呈现:
将evict_announcements_section_from_cache()
方法调用放在何处的一些选项:
.delete()
,和.put()
方法中.post()
方法中然后在RequestHandler的get页面中,我可以调用get_announcements_section()
,它将遵循标准的memcache模式(check cache,add to cache on miss,return value)并将该HTML向下传递到页面中该块的模板。
典型的设计模式是将缓存逐出逻辑放在模型中,还是控制器/请求处理程序,或者其他地方?理想情况下,我希望避免在代码中使用触角来逐出逻辑。
常规驱逐的两种选择:
我在一个开源的Github项目中有这样一个装饰师:
http://github.com/jamslevy/gae_memoize/tree/master
它更深入一点,允许强制执行函数(当你想刷新缓存时)或强制本地缓存…这些都是我在应用程序中需要的东西,所以我把它们放入我的memoize decorator中。在
相关问题 更多 >
编程相关推荐