如何使Pylons中的beaker_cache无效?

时间:2011-03-03 18:41:57

标签: caching pylons beaker

需要使beaker_cache装饰器为特定控制器操作创建的缓存无效:

from pylons.decorators.cache import beaker_cache

class SampleController(BaseController):

    @beaker_cache()
    def home(self):
        c.data = expensive_call()
        return render('/home.myt')

    def __clear_home_cache(self):
        pass

我可以在__clear_home_cache函数中使用region_invalidate()吗?

1 个答案:

答案 0 :(得分:1)

了解如何使beaker_cache装饰器缓存的内容无效的一种方法是查看它是如何工作的以及它的作用。它在GitHub上的pylons.decorators.cache模块here's the corresponding source file中定义。

基本上,您正在寻找为给定控制器操作选择 namespace 缓存键的逻辑。这是由该文件中的create_cache_key()函数完成的。而且,顺便说一句,该功能有一个有用的评论:

Example:
    from pylons import cache
    from pylons.decorators.cache import create_cache_key
    namespace, key = create_cache_key(MyController.some_method)
    cache.get_cache(namespace).remove(key)