2011-03-03 15 views
2

需要通過無效裝飾beaker_cache創建一個緩存特定的控制器動作:如何使主塔中的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函數內?

回答

1

查找如何使beaker_cache裝飾器緩存的東西失效的一種方法是查看它的工作原理和功能。它在GitHub上的pylons.decorators.cache模塊,here's the corresponding source file中定義。

基本上你要尋找的是選擇命名空間緩存對於給定的控制操作鍵邏輯。這是通過該文件中的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)