2016-03-25 6 views
3

生成したページは静的なままで、私のサーバーはコンテンツを再生成するリソースを無駄にしません。私はメモを書くことについて知っていますが、Flaskがこれに対して組み込みのメソッドか別のメソッドを提供しているのか疑問に思っていました。Jinjaテンプレートから静的ページを生成してFlaskで配信します

+0

このようなすべてのページを表示したいのですか、特定のページのみを表示しますか? – Suever

+0

ちょうどあるページ、確かにそれらのすべてではない。ページの内容は、アプリケーションを再起動するたびに変更される可能性があります。 – muddyfish

答えて

4

Flask-Cacheを使用できます。 Cacheインスタンスを作成することによって

スタート:CACHE_TYPE = 'simple'は、キャッシングのためのPythonの辞書を使用していること

from flask import Flask 
from flask.ext.cache import Cache 
application = Flask(__name__) 
cache = Cache(application, config={'CACHE_TYPE': 'simple'}) 

注意してください。あるいは、memcachedまたはredisを使用して、より大きなスケーラビリティを得ることができます。 またはCACHE_TYPE = 'filesystem'を使用し、ファイルシステムにキャッシュすることができます。

その後、あなたのビュー関数を飾る:

@cache.cached(timeout=100000) 
def viewfunc(): 
    return render_template('viewtemplate.html') 
+2

Flask-Cacheを使った["無限タイムアウト"](http://stackoverflow.com/questions/17938711/how-can-i-configure-flask-cache-with-infinite-timeout)についての説明を参照してください。 –

4

render_templateは、文字列を生成します。文字列をファイルに保存することができます。フラスコはserve filesです。

# generate the page at some point 
import os 
out = render_template('page.html', one=2, cat='>dog') 
with open(os.path.join(app.instance_path, 'page.html') as f: 
    f.write(out) 

# serve it some other time 
from flask import send_from_directory 
return send_from_directory(app.instance_path, 'page.html') 

この例は、単にファイル名をinstance folderにファイルを置きます(つまり、最初に存在することを確認してください)とハードコード。あなたの本当のアプリでは、ファイルをどこに保存したいのか、どこに呼びたいのかを知っていると思います。

このようなことがたくさんある場合は、Flask-Cacheがより適切な選択肢になります。キャッシュされたデータの格納と読み込みを処理し、より効率的なバックエンド(またはファイルシステム)に保存できます。

関連する問題