tornado緩存技術

jopen 10年前發布 | 31K 次閱讀 緩存組件 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})
上面的還要考慮
  1. 區分登陸用戶和非登錄用戶,登陸用戶不需要cache

  2. 區分get和post等,如果post要清空cache

  3. 如果是后臺管理頁面不需要緩存

  4. 如果寫成裝飾器來裝飾要cache的函數,類等就更好了 eg.

    @cache(backend="redis", timeout=180, methods=["GET", ], cache_user="unlogined")

 

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!