Compress responses in your Flask app with gzip.
- - - - - -Flask-Compress allows you to easily compress your Flask application's responses with gzip.
- -The preferred solution is to have a server (like Nginx) automatically compress the static files for you. If you don't have that option Flask-Compress will solve the problem for you.
- -Flask-Compress both adds the various headers required for a compressed response and gzips the response data. This makes serving gzip compressed static files extremely easy.
- -Internally, every time a request is made the extension will check if it matches one of the compressible MIME types and will automatically attach the appropriate headers.
- -If you use pip then installation is simply:
- -$ pip install flask-compress
or, if you want the latest github version:
- -$ pip install git+git://github.com/libwilliam/flask-compress.git
You can also install Flask-Compress via Easy Install:
- -$ easy_install flask-compress
Flask-Compress is incredibly simple to use. In order to start gzip'ing your Flask application's assets, the first thing to do is let Flask-Compress know about your flask.Flask
application object.
from flask import Flask
-from flask_compress import Compress
-
-app = Flask(__name__)
-Compress(app)
In many cases, however, one cannot expect a Flask instance to be ready at import time, and a common pattern is to return a Flask instance from within a function only after other configuration details have been taken care of. In these cases, Flask-Compress provides a simple function, flask_compress.Compress.init_app
, which takes your application as an argument.
from flask import Flask
-from flask_compress import Compress
-
-compress = Compress()
-
-def start_app():
- app = Flask(__name__)
- compress.init_app(app)
- return app
In terms of automatically compressing your assets using gzip, passing your flask.Flask
object to the flask_compress.Compress
object is all that needs to be done.
Within your Flask application's settings you can provide the following settings to control the behavior of Flask-Compress. None of the settings are required.
- - - - - - - - - - - - - - - - - - - - - - - - - - -Option | Description | Default |
---|---|---|
COMPRESS_MIMETYPES | Set the list of mimetypes to compress here. |
-[ 'text/html', 'text/css', 'text/xml', 'application/json', 'application/javascript' ]
- |
COMPRESS_LEVEL | Specifies the gzip compression level. | 6 |
COMPRESS_MIN_SIZE | Specifies the minimum file size threshold for compressing files. | 500 |