Python 从Jinja模板生成一个静态页面,并将其与Flask一起提供

Python 从Jinja模板生成一个静态页面,并将其与Flask一起提供,python,flask,jinja2,Python,Flask,Jinja2,我想创建一个页面,一旦生成,它将保持静态,这样我的服务器就不会浪费资源重新生成内容。我知道记忆,但想知道Flask是否提供了一种内置或不同的记忆方法。您可以使用 首先创建缓存实例: from flask import Flask from flask.ext.cache import Cache application = Flask(__name__) cache = Cache(application, config={'CACHE_TYPE': 'simple'}) 请注意,CACHE\

我想创建一个页面,一旦生成,它将保持静态,这样我的服务器就不会浪费资源重新生成内容。我知道记忆,但想知道Flask是否提供了一种内置或不同的记忆方法。

您可以使用

首先创建
缓存
实例:

from flask import Flask
from flask.ext.cache import Cache
application = Flask(__name__)
cache = Cache(application, config={'CACHE_TYPE': 'simple'})
请注意,
CACHE\u TYPE='simple'
使用python字典进行缓存。或者,您可以使用
memcached
redis
并获得更大的可扩展性。 或者,您可以使用
CACHE\u TYPE='filesystem'
并缓存到文件系统

然后装饰视图功能:

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

render_模板
生成一个字符串。可以将字符串保存到文件中。烧瓶罐

本例只是将文件放入(确保首先存在)并硬编码文件名。在你真正的应用程序中,我假设你知道你想把文件保存在哪里以及你想叫它们什么


如果您发现自己经常这样做,这将是一个更好的选择,因为它可以为您存储和加载缓存数据,并可以保存到更高效的后端(或仍然是文件系统)。

您希望所有页面都像这样还是只需要某个页面?只是某个页面,当然不是所有页面。每当我重新启动应用程序时,页面的内容都可能更改。请参阅关于使用Flask缓存的讨论。
# 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')