繁体   English   中英

从Jinja模板生成静态页面并与Flask一起提供

[英]Generate a static page from a Jinja template and serve it with Flask

我想创建一个页面,一旦生成将保持静态,所以我的服务器不会浪费资源重新生成内容。 我知道memoizing但是想知道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字典进行缓存。 或者,您可以使用memcachedredis并获得更高的可伸缩性。 或者,您可以使用CACHE_TYPE = 'filesystem'并缓存到文件系统。

然后装饰你的视图功能:

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

render_template生成一个字符串。 字符串可以保存到文件中。 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')

此示例只是将文件放在实例文件夹中 (确保首先存在)并硬编码文件名。 在您的真实应用程序中,我假设您会知道要保存文件的位置以及您想要调用它们的位置。

如果你发现自己做了很多, Flask-Cache将是一个更好的选择,因为它处理为你存储和加载缓存的数据,并可以保存到更有效的后端(或文件系统仍然)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM