2

需要使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

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

4

1 回答 1

1

找出如何使beaker_cache装饰器缓存的内容无效的一种方法是查看它的工作原理和作用。它在pylons.decorators.cache模块中定义,这里是 GitHub 上的相应源文件

基本上,您正在寻找为给定控制器操作选择名称空间缓存键的逻辑。这是由该文件中的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)
于 2011-03-15T21:47:48.960 回答