tornado緩存技術
模板緩存,是一定要開的
頁面緩存,如果可以靜態化,也會靜態化
對于部分可以緩存的頁面,用uimodule加上緩存
結果集一般是數據驅動刪除緩存...
能用memcache就不用redis...
相關鏈接
memcached緩存tornado頁面 http://www.linuxzen.com/vlogshi-yong-tornadokuang-jia-jie-he-memcachedhuan-cun-ye-mian.html
使用mongo http://tornadogists.org/2927255/class CacheBaseHandler(tornado.web.RequestHandler): def prepare(self): # 這里判斷一下是否是GET請求,是否是登陸用戶,才做以下處理 cached = self.application.db.cache.find_one({"slug": self.request.path}) if cached is not None: self.write(cached["content"]) self.finish() def render_string(self, template_name, **kwargs): html_generated = \ super(CacheBaseHandler, self).render_string(template_name, **kwargs) self.application.db.cache.update({"slug": self.request.path}, {"$set": {"content": html_generated}}, upsert=True) return html_generated def on_finish(self): """ 重寫結束請求前的方法函數 """ if self.request.method == "POST": # 如果遇到POST提交則清空緩存 self.application.db.cache.remove({"slug": self.request.path})上面的還要考慮
-
區分登陸用戶和非登錄用戶,登陸用戶不需要cache
-
區分get和post等,如果post要清空cache
-
如果是后臺管理頁面不需要緩存
-
如果寫成裝飾器來裝飾要cache的函數,類等就更好了 eg.
@cache(backend="redis", timeout=180, methods=["GET", ], cache_user="unlogined")
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!