📖 Scenario: You are building a simple Flask web app that serves a text message. To improve performance, you want to compress the responses so they load faster for users.
🎯 Goal: Learn how to add Flask-Compress to your Flask app to automatically compress HTTP responses.
📋 What You'll Learn
Create a basic Flask app with one route
Add Flask-Compress extension to the app
Configure Flask-Compress with a compression level
Serve compressed responses from the Flask app
💡 Why This Matters
🌍 Real World
Compressing HTTP responses reduces data size sent to users, improving load times and saving bandwidth.
💼 Career
Web developers often use Flask-Compress or similar tools to optimize web app performance and user experience.
Progress0 / 4 steps
1
Create a basic Flask app
Create a Flask app by importing Flask from flask and instantiate it as app. Then create a route / that returns the string 'Hello, Flask!'.
Flask
Hint
Start by importing Flask and creating an app instance. Then define a route '/' with a function that returns a simple string.
2
Add Flask-Compress extension
Import Compress from flask_compress and create a Compress object called compress. Initialize it with the Flask app app.
Flask
Hint
Import Compress, create an instance, and call init_app(app) to enable compression.
3
Configure compression level
Set the Flask app config key COMPRESS_LEVEL to 6 to specify the compression level.
Flask
Hint
Use app.config['COMPRESS_LEVEL'] = 6 to set compression level before initializing Compress.
4
Run the Flask app
Add the code to run the Flask app with app.run() inside the if __name__ == '__main__': block.
Flask
Hint
Use the standard Python block if __name__ == '__main__': to run app.run().
Practice
(1/5)
1. What is the main purpose of using Flask-Compress in a Flask application?
easy
A. To add database support to the Flask app
B. To compress HTTP responses and make the app faster
C. To handle user authentication automatically
D. To create HTML templates for the app
Solution
Step 1: Understand Flask-Compress functionality
Flask-Compress is designed to compress HTTP responses to reduce data size sent to clients.
Step 2: Identify the main benefit
Compressing responses makes the app faster by reducing load times and bandwidth.
Final Answer:
To compress HTTP responses and make the app faster -> Option B
Quick Check:
Compression improves speed = B [OK]
Hint: Flask-Compress speeds apps by shrinking response size [OK]
Common Mistakes:
Confusing compression with database or authentication features
Thinking it creates templates
Assuming it handles routing
2. Which of the following is the correct way to enable Flask-Compress in your Flask app?
easy
A. from flask_compress import Compress
app = Flask(__name__)
Compress(app)
B. import compress
app = Flask()
compress.enable(app)
C. from flask_compress import Compress
app = Flask()
app.compress = True
D. import FlaskCompress
app = Flask(__name__)
FlaskCompress.compress(app)
Solution
Step 1: Check import and initialization syntax
The official way is to import Compress from flask_compress and call Compress(app) after creating the Flask app.
Step 2: Verify each option
from flask_compress import Compress
app = Flask(__name__)
Compress(app) matches the correct import and usage. Others use wrong module names or incorrect method calls.
Final Answer:
from flask_compress import Compress
app = Flask(__name__)
Compress(app) -> Option A
Quick Check:
Correct import and call = A [OK]
Hint: Import Compress and call Compress(app) to enable [OK]
Common Mistakes:
Using wrong import names
Trying to set app.compress = True
Calling non-existent methods
3. Given this Flask app code snippet using Flask-Compress, what will be the effect on the HTTP response?
from flask import Flask
from flask_compress import Compress
app = Flask(__name__)
Compress(app)
@app.route('/')
def home():
return 'Hello, world!'
medium
A. The response will be compressed if the client supports it
B. The response will always be uncompressed
C. The app will raise an error because Compress is not configured
D. The response will be compressed only for POST requests
Solution
Step 1: Understand default behavior of Flask-Compress
Flask-Compress automatically compresses responses if the client sends headers indicating support (like Accept-Encoding).
Step 2: Analyze the code snippet
The app initializes Compress with the app and returns a simple string. Compression will happen conditionally based on client support.
Final Answer:
The response will be compressed if the client supports it -> Option A
Quick Check:
Compression depends on client headers = A [OK]
Hint: Compression happens only if client supports it [OK]
Common Mistakes:
Assuming compression is always on
Thinking configuration is mandatory
Believing compression only works on POST
4. You added Flask-Compress to your Flask app but notice responses are not compressed. Which of these is the most likely cause?
medium
A. You forgot to call Compress(app) after creating the Flask app
B. You used Compress() without passing the app instance
C. The client does not send Accept-Encoding header
D. All of the above
Solution
Step 1: Check Flask-Compress initialization
If you don't call Compress(app) or call Compress() without app, compression won't activate.
Step 2: Consider client headers
Compression only happens if the client sends Accept-Encoding header indicating support.
Step 3: Combine causes
All these issues can cause no compression, so the correct answer is all of the above.
Final Answer:
All of the above -> Option D
Quick Check:
Initialization and client headers both matter = D [OK]
Hint: Check app init and client headers for compression issues [OK]
Common Mistakes:
Ignoring client headers
Not calling Compress(app)
Assuming compression works without setup
5. You want to compress only JSON responses in your Flask app using Flask-Compress. Which configuration change achieves this?
hard
A. Set app.config['COMPRESS_LEVEL'] = 'json' before calling Compress(app)
B. Call Compress(app, mime_types=['application/json']) after app creation
C. Set app.config['COMPRESS_MIMETYPES'] = ['application/json'] before calling Compress(app)
D. Use @compress.json_only decorator on JSON routes
Solution
Step 1: Understand Flask-Compress configuration
You can specify which MIME types to compress by setting COMPRESS_MIMETYPES in app config before initializing Compress.
Step 2: Evaluate options
Set app.config['COMPRESS_MIMETYPES'] = ['application/json'] before calling Compress(app) correctly sets COMPRESS_MIMETYPES to ['application/json'] before calling Compress(app). Call Compress(app, mime_types=['application/json']) after app creation is invalid because Compress does not accept mime_types parameter. Options A and D are incorrect configurations or decorators.
Final Answer:
Set app.config['COMPRESS_MIMETYPES'] = ['application/json'] before calling Compress(app) -> Option C
Quick Check:
Configure COMPRESS_MIMETYPES before Compress = C [OK]
Hint: Set COMPRESS_MIMETYPES in config before Compress(app) [OK]
Common Mistakes:
Trying to pass mime_types to Compress()
Using wrong config keys
Expecting decorators to control compression
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.