Make the current request's baseurl to a part of the cache key

This way we create separate caches for URLs access via different schemes/prefixes/etc.
Otherwise our generated page might not work when accessing OctoPrint from external
after accessing it from internal once.
This commit is contained in:
Gina Häußge 2015-11-23 12:17:57 +01:00
parent a6c24e174d
commit d0eca800fb
2 changed files with 4 additions and 4 deletions

View file

@ -313,7 +313,7 @@ class LessSimpleCache(BaseCache):
_cache = LessSimpleCache()
def cached(timeout=5 * 60, key=lambda: "view/%s" % flask.request.path, unless=None, refreshif=None, unless_response=None):
def cached(timeout=5 * 60, key=lambda: "view:%s" % flask.request.path, unless=None, refreshif=None, unless_response=None):
def decorator(f):
@functools.wraps(f)
def decorated_function(*args, **kwargs):
@ -339,7 +339,7 @@ def cached(timeout=5 * 60, key=lambda: "view/%s" % flask.request.path, unless=No
return rv
# get value from wrapped function
logger.debug("No cache entry or refreshing cache for {path}, calling wrapped function".format(path=flask.request.path))
logger.debug("No cache entry or refreshing cache for {path} (key: {key}), calling wrapped function".format(path=flask.request.path, key=cache_key))
rv = f(*args, **kwargs)
# do not store if the "unless_response" condition is true

View file

@ -29,7 +29,7 @@ _valid_div_re = re.compile("[a-zA-Z_-]+")
@app.route("/")
@util.flask.cached(timeout=-1,
refreshif=lambda: util.flask.cache_check_headers() or "_refresh" in request.values,
key=lambda: "view/%s/%s" % (request.path, g.locale),
key=lambda: "view:{}:{}".format(request.base_url, g.locale),
unless_response=util.flask.cache_check_response_headers)
def index():
@ -404,7 +404,7 @@ def robotsTxt():
@app.route("/i18n/<string:locale>/<string:domain>.js")
@util.flask.cached(timeout=-1,
refreshif=lambda: util.flask.cache_check_headers() or "_refresh" in request.values,
key=lambda: "view/%s/%s" % (request.path, g.locale))
key=lambda: "view:{}:{}".format(request.base_url, g.locale))
def localeJs(locale, domain):
messages = dict()
plural_expr = None