diff --git a/fastapi_cache/decorator.py b/fastapi_cache/decorator.py index cdae9ef..07573b1 100644 --- a/fastapi_cache/decorator.py +++ b/fastapi_cache/decorator.py @@ -26,7 +26,9 @@ def cache( nonlocal coder nonlocal expire nonlocal key_builder - request = kwargs.get("request") + copy_kwargs = kwargs.copy() + request = copy_kwargs.pop("request", None) + response = copy_kwargs.pop("response", None) if request and request.headers.get("Cache-Control") == "no-store": return await func(*args, **kwargs) @@ -34,10 +36,10 @@ def cache( expire = expire or FastAPICache.get_expire() key_builder = key_builder or FastAPICache.get_key_builder() backend = FastAPICache.get_backend() - copy_kwargs = kwargs.copy() - copy_kwargs.pop("request", None) - copy_kwargs.pop("response", None) - cache_key = key_builder(func, namespace, args=args, kwargs=copy_kwargs) + + cache_key = key_builder( + func, namespace, request=request, response=response, args=args, kwargs=copy_kwargs + ) ttl, ret = await backend.get_with_ttl(cache_key) if not request: if ret is not None: @@ -50,7 +52,6 @@ def cache( return await func(request, *args, **kwargs) if_none_match = request.headers.get("if-none-match") if ret is not None: - response = kwargs.get("response") if response: response.headers["Cache-Control"] = f"max-age={ttl}" etag = f"W/{hash(ret)}" diff --git a/pyproject.toml b/pyproject.toml index 0798ff1..c27ab78 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fastapi-cache2" -version = "0.1.3.3" +version = "0.1.3.4" description = "Cache for FastAPI" authors = ["long2ice "] license = "Apache-2.0"