Compress responses in your Flask app with gzip or brotli.
Project description
Flask-Compress
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.
How it works
Flask-Compress both adds the various headers required for a compressed response and compresses the response data. This makes serving 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 whether the client and the server use some common compression algorithm, and will automatically attach the appropriate headers.
To determine the compression algorithm, the Accept-Encoding
request header is inspected, respecting the
quality factor as described in MDN docs.
If no requested compression algorithm is supported by the server, we don't compress the response. If, on the other
hand, multiple suitable algorithms are found and are requested with the same quality factor, we choose the first one
defined in the COMPRESS_ALGORITHM
option (see below).
Installation
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/colour-science/flask-compress.git
You can also install Flask-Compress via Easy Install:
$ easy_install flask-compress
Using 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.
Options
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 |
COMPRESS_CACHE_KEY |
Specifies the cache key method for lookup/storage of response data. | None |
COMPRESS_CACHE_BACKEND |
Specified the backend for storing the cached response data. | None |
COMPRESS_REGISTER |
Specifies if compression should be automatically registered. | True |
COMPRESS_ALGORITHM |
Supported compression algorithms. | ['br', 'gzip'] |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.