Oluşturulduktan sonra statik olarak saklanacak bir sayfa oluşturmak istiyorum. Anımsatmayı biliyorum ama Flask'ın bunun için yerleşik veya farklı bir yöntem sağlayıp sağlamadığını merak ediyordum.Bir Jinja şablonundan statik bir sayfa oluşturun ve Flask
cevap
Flask-Cache'u kullanabilirsiniz. Cache
örneğini oluşturarak
Başlangıç: CACHE_TYPE = 'simple'
önbelleğe alma için bir piton sözlüğünü kullandığı
from flask import Flask
from flask.ext.cache import Cache
application = Flask(__name__)
cache = Cache(application, config={'CACHE_TYPE': 'simple'})
dikkat edin. Alternatif olarak, memcached
veya redis
'u kullanabilir ve daha fazla ölçeklenebilirlik elde edebilirsiniz. Veya, CACHE_TYPE = 'filesystem'
ve önbellek dosya sistemine kullanabilirsiniz.
Sonra görünüm işlevlerini süslemek:
@cache.cached(timeout=100000)
def viewfunc():
return render_template('viewtemplate.html')
Flask-Cache ile ["sonsuz zaman aşımı"] (http://stackoverflow.com/questions/17938711/how-can-i-configure-flask-cache-with-infinite-timeout) hakkında bu tartışmayı görün. –
render_template
bir dize oluşturur. Bir dize bir dosyaya kaydedilebilir. Şişe serve files olabilir.
# 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')
Bu örnek sadece instance folder dosyayı (emin birinci var olun) ve sert kodlarını dosya adı koyar. Gerçek uygulamanızda dosyaları nerede saklamak istediğinizi ve ne aramak istediğinizi bileceğinizi varsayalım.
Eğer bu işi çok yaparsanız, Flask-Cache daha iyi bir seçim olacaktır, çünkü önbelleğe alınmış verileri sizin için saklamakta ve yüklemektedir ve daha verimli arka planlar (veya dosya sistemi) kaydedebilirsiniz.
Böyle sayfaların tümünü mi yoksa sadece belirli bir sayfayı mı istiyorsunuz? – Suever
Sadece belirli bir sayfa (lar), kesinlikle hepsi değil. Uygulamayı yeniden başlattığımda sayfanın içeriği değişebilir. – muddyfish