需要使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()
吗?
答案 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)