【发布时间】:2016-03-25 04:10:24
【问题描述】:
我想更好地理解 flask 如何在 ningx 后面为 jinja 模板提供服务的逻辑。
我的目标是优化加载时间,通过缓存或使 ningx 服务于 JS、CSS 以及可能的 片段 html 的模板 不是动态的。
根据评论更新
如何测试 Ningx 和 Flask 之间的哪个服务为 jinja 标记为 src="{{ url_for('static', filename='static/js/pageScript.js'}} 的 html 模板中调用的静态资产提供服务?
我想尽可能将静态资产委托给 Nginx, 并且我想通过以下配置了解哪个功能。
例如,从page.html模板调用的所有JS、CSS对于路由/path/的所有<int:ids>都是一样的:
@application.route('/path/<int:id>/')
def graph_template(id):
meta = {'og:title':'the title of my page is about element ID'}
return render_template('page.html', meta=meta)
唯一的动态部分是<meta>片段,但在模板中我将调用JS和CSS:
<script type="text/javascript" src="{{ url_for('static', filename='static/js/pageScript.js') }}"></script>?
- flask 是否提供整个最终的 html 模板,包括 js 和 css ? 或
- flask 是否只服务于 html 页面,而 js 和 css 由 nginx 服务? 或
- 或者甚至可以让flask服务一部分html,让nginx服务完整的html页面和资产?
- 如何缓存动态 jinja 模板中常见的 js 和 css 元素?
在另一个问题中: [Flask: Caching static files (.js, .css) 建议使用 nginx 服务静态元素,但这里我有通过 jinja 标记 调用的 dynamic 元素,我不清楚哪个服务正在处理什么。
我的 nginx 配置使用这些块来路由 /static/ 和 /path/:
location /static {
alias /var/www/mySite/static;
}
location /path/ {
include uwsgi_params;
uwsgi_pass unix:/var/www/mySite/myApp.sock;
}
Page.html 模板中用于调用资产的 Jijnja 标记:
<script type="text/javascript" src="{{ url_for('static', filename='static/js/pageScript.js') }}"></script>
渲染:src=/static/js/pageScript.js
flask 应用的结构是:
/app.py
/templates/page.html
/static/js/pageScript.js
【问题讨论】:
标签: python caching nginx flask jinja2