在生产中从CDN而非Flask服务静态文件

在生产中从CDN而非Flask服务静态文件,第1张

在生产中从CDN而非Flask服务静态文件

无需更改链接到静态文件的方式,仍然可以使用

url_for('static',filename='myfile.txt')
。将默认静态视图替换为重定向到CDN(如果已配置)的视图。

from urllib.parse import urljoin# or for python 2: from urlparse import urljoinfrom flask import [email protected]('static')def static(filename):    static_url = app.config.get('STATIC_URL')    if static_url:        return redirect(urljoin(static_url, filename))    return app.send_static_file(filename)

无论您是在开发机器上还是在生产机器上,都将

STATIC_URL
config值设置为CDN,并且对静态文件的请求将在此处重定向。


重定向相对便宜,并且被浏览器记住。如果您发现性能受到它们的显着影响,则可以编写一个在使用CDN时直接链接的函数。

@app.template_global()def static_url(filename):    static_url = app.config.get('STATIC_URL')    if static_url:        return urljoin(static_url, filename)    return url_for('static', filename=filename)

template_global
装饰使得所有可用模板的功能。代替
url_for
需要静态文件的URL时使用它。


可能已经有一个Flask扩展程序可以为您执行此 *** 作。例如,Flask-S3提供了一个服务

url_for
,用于提供来自AWS
S3的静态文件。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5647103.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存