在web.py, bottle这些微型框架中, 缓存数据这块是没有的, 但是又不想安装插件, 那就只有自己实现了
下面的是类似一个全局变量, 可以把数据保存在单例对象中
# coding: utf-8import timeclass SimpleCache(dict): ''' cache = SimpleCache.getInstance() cache.get('key') cache.set('key', 'value') ''' def __new__(cls, *args): if not hasattr(cls, '_instance'): cls._instance = dict.__new__(cls) else: raise Exception('SimpleCache already initialized') return cls._instance @classmethod def getInstance(cls): if not hasattr(cls, '_instance'): cls._instance = dict.__new__(cls) return cls._instance def get(self, name, default=None): if not name: return default levels = name.split('.') data = self for level in levels: try: data = data[level] except: return default return data def set(self, name, value): levels = name.split('.') arr = self for name in levels[:-1]: if not arr.has_key(name): arr[name] = {} arr = arr[name] arr[levels[-1]] = value def getset(self, name, value): g = self.get(name) if not g: g = value self.set(name, g) return g