-
Notifications
You must be signed in to change notification settings - Fork 14.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix static file caching is disabled in Airflow Webserver. #39345
Fix static file caching is disabled in Airflow Webserver. #39345
Conversation
In Airflow 2.3.0, it's Flask version is bumped up to 2.0.x Flask 2.0.x has some breaking changes. one of them is about `SEND_FILE_MAX_AGE_DEFAULT`. It affect static file's Expires value on HTTP response header. and the default value is changed from 12 hours to None on that version. in order to enable static file caching in airflow webserver. it needs explicitly configration of `SEND_FILE_MAX_AGE_DEFAULT` in Flask.
Congratulations on your first Pull Request and welcome to the Apache Airflow community! If you have any issues or are unsure about any anything please check our Contributors' Guide (https://github.com/apache/airflow/blob/main/contributing-docs/README.rst)
|
Nice catch! We could probably cache it for a few weeks. Assets will only change between airflow version updates. |
Really cool catch. I can immediately see it locally and the UI feels immediately faster with this PR! THANKS! (I think we could debate about the time, 12h sounds reasonable for me, still it will allow also proxy chains to cache files (if not HTTPS) - if somebody wants to have this nicer, still could be configurable. But 12h is a big improvement anyway! |
Awesome work, congrats on your first merged pull request! You are invited to check our Issue Tracker for additional contributions. |
* Fix static file caching is disabled in Airflow Webserver. In Airflow 2.3.0, it's Flask version is bumped up to 2.0.x Flask 2.0.x has some breaking changes. one of them is about `SEND_FILE_MAX_AGE_DEFAULT`. It affect static file's Expires value on HTTP response header. and the default value is changed from 12 hours to None on that version. in order to enable static file caching in airflow webserver. it needs explicitly configration of `SEND_FILE_MAX_AGE_DEFAULT` in Flask. * Fix typo * Fix code's formatting with ruff
* Fix static file caching is disabled in Airflow Webserver. In Airflow 2.3.0, it's Flask version is bumped up to 2.0.x Flask 2.0.x has some breaking changes. one of them is about `SEND_FILE_MAX_AGE_DEFAULT`. It affect static file's Expires value on HTTP response header. and the default value is changed from 12 hours to None on that version. in order to enable static file caching in airflow webserver. it needs explicitly configration of `SEND_FILE_MAX_AGE_DEFAULT` in Flask. * Fix typo * Fix code's formatting with ruff (cherry picked from commit d396533)
close #39344
Above Airflow 2.3.0, webserver's static file caching is disabled because of major updated Flask's breaking change. In Flask 2.0.x, default value of
SEND_FILE_MAX_AGE_DEFAULT
is changed from 12 hours to None on that version.SEND_FILE_MAX_AGE_DEFAULT
affectsExpires
Field in HTTP response header.if it is None,
Expires
Field in HTTP response header is removed.this pr add
SEND_FILE_MAX_AGE_DEFAULT
config for Flask explicitly in/airflow/www/app.py
.It enables static file caching in Airflow webserver.
I checked Airflow configuration references and searched
SEND_FILE_MAX_AGE_DEFAULT
in Airflow codebase, but there's no way to enable static file caching for airflow webserver's Flask.Airflow 2.9.0: As-Is
Airflow 2.9.0: To-Be (Caching Worked)
Local test in /tests/www
^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named
{pr_number}.significant.rst
or{issue_number}.significant.rst
, in newsfragments.