文章内容

2018/8/28 9:53:23,作 者: 黄兵

Flask Bootstrap 使用CDN减轻服务器压力 flask网站优化

最近我写的一个关于在线接收短信网站访问量暴增,这个网站只有1M的宽带,经常跑满,看下面截图:


看一下网站访问量:

169的访问量网站宽带都跑满了,所以需要优化。

这个宽带跑满就需要优化一些大文件,减少占用宽带。最好的方法就是使用CDN服务。

修改Bootstrap-flask使用CDN:

app.config['BOOTSTRAP_SERVE_LOCAL'] = False

之后指定CDN地址:

添加如下引用:

from flask_bootstrap import Bootstrap, WebCDN, ConditionalCDN, BOOTSTRAP_VERSION, JQUERY_VERSION, HTML5SHIV_VERSION, \
    RESPONDJS_VERSION

代码:

def change_cdn_domestic(tar_app):
    static = tar_app.extensions['bootstrap']['cdns']['static']
    local = tar_app.extensions['bootstrap']['cdns']['local']

    def change_one(tar_lib, tar_ver, fallback):
        tar_js = ConditionalCDN('BOOTSTRAP_SERVE_LOCAL', fallback,
                                WebCDN('//cdn.bootcss.com/' + tar_lib + '/' + tar_ver + '/'))
        tar_app.extensions['bootstrap']['cdns'][tar_lib] = tar_js

    libs = {'jquery': {'ver': JQUERY_VERSION, 'fallback': local},
            'bootstrap': {'ver': BOOTSTRAP_VERSION, 'fallback': local},
            'html5shiv': {'ver': HTML5SHIV_VERSION, 'fallback': static},
            'respond.js': {'ver': RESPONDJS_VERSION, 'fallback': static}}
    for lib, par in libs.items():
        change_one(lib, par['ver'], par['fallback'])

这个使用的是Bootcss的CDN服务,国内访问稳定且高速,在此表示感谢。

之后调用change_cdn_domestic

change_cdn_domestic(app)

好了,搞定。完整代码如下:


# -*- coding: UTF-8 -*-
from flask import Flask
from flask_bootstrap import Bootstrap, WebCDN, ConditionalCDN, BOOTSTRAP_VERSION, JQUERY_VERSION, HTML5SHIV_VERSION, \
    RESPONDJS_VERSION
from flask_sqlalchemy import SQLAlchemy
from config import config
from flask_moment import Moment
from flask_pagedown import PageDown
from flaskext.markdown import Markdown

bootstrap = Bootstrap()
db = SQLAlchemy()
moment = Moment()
pagedown = PageDown()


def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)
    app.config['BOOTSTRAP_SERVE_LOCAL'] = False

    bootstrap.init_app(app)
    db.init_app(app)
    moment.init_app(app)
    pagedown.init_app(app)
    Markdown(app)
    change_cdn_domestic(app)

    # 附加路由和自定义的错误页面
    from .main import main as main_blueprint
    app.register_blueprint(main_blueprint)

    return app


def change_cdn_domestic(tar_app):
    static = tar_app.extensions['bootstrap']['cdns']['static']
    local = tar_app.extensions['bootstrap']['cdns']['local']

    def change_one(tar_lib, tar_ver, fallback):
        tar_js = ConditionalCDN('BOOTSTRAP_SERVE_LOCAL', fallback,
                                WebCDN('//cdn.bootcss.com/' + tar_lib + '/' + tar_ver + '/'))
        tar_app.extensions['bootstrap']['cdns'][tar_lib] = tar_js

    libs = {'jquery': {'ver': JQUERY_VERSION, 'fallback': local},
            'bootstrap': {'ver': BOOTSTRAP_VERSION, 'fallback': local},
            'html5shiv': {'ver': HTML5SHIV_VERSION, 'fallback': static},
            'respond.js': {'ver': RESPONDJS_VERSION, 'fallback': static}}
    for lib, par in libs.items():
        change_one(lib, par['ver'], par['fallback'])

之后测试,截图如下:

大部分已经使用CDN服务了,再看看宽带压力:

明显可以看到宽带压力小了很多,访问速度也快了很多。

好了,这次对网站的优化就是这些,大家有什么疑问可以在下面给我留言。


参考资料:

Flask-Bootstrap配置加载本地css与js文件

Flask-Bootstrap:使用本地或其他CDN的资源


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - Flask Bootstrap 使用CDN减轻服务器压力 flask网站优化

分享到:

发表评论

评论列表