Skip to content

Commit

Permalink
[Config] Cache static resources (#8370)
Browse files Browse the repository at this point in the history
  • Loading branch information
Erik Ritter committed Oct 17, 2019
1 parent c62b2f4 commit d3406e0
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 5 deletions.
6 changes: 6 additions & 0 deletions UPDATING.md
Expand Up @@ -23,6 +23,12 @@ assists people when migrating to a new version.

## Next Version

* [8370](https://github.com/apache/incubator-superset/pull/8370): Deprecates
the `HTTP_HEADERS` variable in favor of `DEFAULT_HTTP_HEADERS` and
`OVERRIDE_HTTP_HEADERS`. To retain the same behavior you should use
`OVERRIDE_HTTP_HEADERS` instead of `HTTP_HEADERS`. `HTTP_HEADERS` will still
work but may be removed in a future update.

* We're deprecating the concept of "restricted metric", this feature
was not fully working anyhow.
* [8117](https://github.com/apache/incubator-superset/pull/8117): If you are
Expand Down
13 changes: 11 additions & 2 deletions superset/config.py
Expand Up @@ -435,8 +435,14 @@ class CeleryConfig(object):
# CELERY_CONFIG = None

# Additional static HTTP headers to be served by your Superset server. Note
# Flask-Talisman aplies the relevant security HTTP headers.
HTTP_HEADERS = {}
# Flask-Talisman applies the relevant security HTTP headers.
#
# DEFAULT_HTTP_HEADERS: sets default values for HTTP headers. These may be overridden
# within the app
# OVERRIDE_HTTP_HEADERS: sets override values for HTTP headers. These values will
# override anything set within the app
DEFAULT_HTTP_HEADERS = {}
OVERRIDE_HTTP_HEADERS = {}

# The db id here results in selecting this one as a default in SQL Lab
DEFAULT_DB_ID = None
Expand Down Expand Up @@ -665,6 +671,9 @@ class CeleryConfig(object):
SESSION_COOKIE_SECURE = False # Prevent cookie from being transmitted over non-tls?
SESSION_COOKIE_SAMESITE = "Lax" # One of [None, 'Lax', 'Strict']

# Flask configuration variables
SEND_FILE_MAX_AGE_DEFAULT = 60 * 60 * 24 * 365 # Cache static resources

# URI to database storing the example data, points to
# SQLALCHEMY_DATABASE_URI by default if set to `None`
SQLALCHEMY_EXAMPLES_URI = None
Expand Down
13 changes: 10 additions & 3 deletions superset/views/core.py
Expand Up @@ -3076,10 +3076,17 @@ class CssTemplateAsyncModelView(CssTemplateModelView):


@app.after_request
def apply_http_headers(response):
def apply_http_headers(response: Response):
"""Applies the configuration's http headers to all responses"""
for k, v in config.get("HTTP_HEADERS").items():
response.headers[k] = v

# HTTP_HEADERS is deprecated, this provides backwards compatibility
response.headers.extend(
{**config["OVERRIDE_HTTP_HEADERS"], **config.get("HTTP_HEADERS", {})}
)

for k, v in config["DEFAULT_HTTP_HEADERS"].items():
if k not in response.headers:
response.headers[k] = v
return response


Expand Down

0 comments on commit d3406e0

Please sign in to comment.