flask 緩存使用


緩存

當你的應用變慢的時候,可以考慮加入緩存。至少這是最簡單的加速方法。緩存有什 么用?假設有一個函數耗時較長,但是這個函數在五分鍾前返回的結果還是正確的。 那么我們就可以考慮把這個函數的結果在緩存中存放一段時間。

Flask 本身不提供緩存,但是它的基礎庫之一 Werkzeug 有一些非常基本的緩存支持。 它支持多種緩存后端,通常你需要使用的是 memcached 服務器。

設置一個緩存

與創建 Flask 對象類似,你需要創建一個緩存對象並保持它。如 果你正在使用開發服務器,那么你可以創建一個SimpleCache 對象。這個對象提供簡單的緩存, 它把緩存項目保存在 Python 解釋器的內存中:

from werkzeug.contrib.cache import SimpleCache cache = SimpleCache() 

如果你要使用 memcached ,那么請確保有 memcache 模塊支持(你可以從 PyPI 獲得模塊)和一個正在運行的 memcached 服務器。 連接 memcached 服務器示例:

from werkzeug.contrib.cache import MemcachedCache cache = MemcachedCache(['127.0.0.1:11211']) 

如果你正在使用 App Engine ,那么你可以方便地連接到 App Engine memcache 服務器:

from werkzeug.contrib.cache import GAEMemcachedCache cache = GAEMemcachedCache() 

使用緩存

現在的問題是如何使用緩存呢?有兩個非常重要的操作: get() 和 set() 。下面展示如何使用它們:

get() 用於從緩存中獲得項目,調用時 使用一個字符串作為鍵名。如果項目存在,那么就會返回這個項目,否則返回 None:

rv = cache.get('my-item') 

set() 用於把項目添加到緩存中。第一 個參數是鍵名,第二個參數是鍵值。還可以提供一個超時參數,當超過時間后項目會 自動刪除。

下面是一個完整的例子:

def get_my_item(): rv = cache.get('my-item') if rv is None: rv = calculate_value() cache.set('my-item', rv, timeout=5 * 60) return rv


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM