从 Jinja 模板生成静态页面并使用 Flask 提供
Generate a static page from a Jinja template and serve it with Flask
我想创建一个页面,该页面一旦生成将保持静态,这样我的服务器就不会浪费资源重新生成内容。我知道记忆,但想知道 Flask 是否为此提供了内置或不同的方法。
您可以使用 Flask-Cache.
首先创建 Cache
实例:
from flask import Flask
from flask.ext.cache import Cache
application = Flask(__name__)
cache = Cache(application, config={'CACHE_TYPE': 'simple'})
请注意 CACHE_TYPE = 'simple'
使用 python 字典进行缓存。或者,您可以使用 memcached
或 redis
并获得更大的可扩展性。
或者,您可以使用 CACHE_TYPE = 'filesystem'
并缓存到文件系统。
然后装饰你的视图函数:
@cache.cached(timeout=100000)
def viewfunc():
return render_template('viewtemplate.html')
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 将是更好的选择,因为它会为您处理存储和加载缓存数据,并且可以保存到更高效的后端(或文件系统)。
我想创建一个页面,该页面一旦生成将保持静态,这样我的服务器就不会浪费资源重新生成内容。我知道记忆,但想知道 Flask 是否为此提供了内置或不同的方法。
您可以使用 Flask-Cache.
首先创建 Cache
实例:
from flask import Flask
from flask.ext.cache import Cache
application = Flask(__name__)
cache = Cache(application, config={'CACHE_TYPE': 'simple'})
请注意 CACHE_TYPE = 'simple'
使用 python 字典进行缓存。或者,您可以使用 memcached
或 redis
并获得更大的可扩展性。
或者,您可以使用 CACHE_TYPE = 'filesystem'
并缓存到文件系统。
然后装饰你的视图函数:
@cache.cached(timeout=100000)
def viewfunc():
return render_template('viewtemplate.html')
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 将是更好的选择,因为它会为您处理存储和加载缓存数据,并且可以保存到更高效的后端(或文件系统)。