diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/cache/ResponseCacheManager.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/cache/ResponseCacheManager.java index e67acc16..5b6ce13b 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/cache/ResponseCacheManager.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/cache/ResponseCacheManager.java @@ -71,7 +71,7 @@ public class ResponseCacheManager { new SetMaxAgeHeaderAfterCacheExchangeMutator(configuredTimeToLive, Clock.systemDefaultZone())); } - private static final List statusesToCache = Arrays.asList(HttpStatus.OK, HttpStatus.PARTIAL_CONTENT, + private static final List statusesToCache = Arrays.asList(HttpStatus.OK, HttpStatus.PARTIAL_CONTENT, HttpStatus.MOVED_PERMANENTLY); public Optional getFromCache(ServerHttpRequest request, String metadataKey) { @@ -158,8 +158,7 @@ public class ResponseCacheManager { } private boolean isStatusCodeToCache(ServerHttpResponse response) { - return Optional.ofNullable(response.getStatusCode()).map(HttpStatusCode::value).map(HttpStatus::resolve) - .map(statusesToCache::contains).orElse(Boolean.FALSE); + return statusesToCache.contains(response.getStatusCode()); } boolean isRequestCacheable(ServerHttpRequest request) { @@ -168,15 +167,14 @@ public class ResponseCacheManager { private boolean isVaryWildcard(ServerHttpResponse response) { HttpHeaders headers = response.getHeaders(); - List varyValues = Optional.ofNullable(headers.get(HttpHeaders.VARY)).orElse(Collections.emptyList()); + List varyValues = headers.getOrEmpty(HttpHeaders.VARY); return varyValues.stream().anyMatch(VARY_WILDCARD::equals); } private boolean isCacheControlAllowed(HttpMessage request) { HttpHeaders headers = request.getHeaders(); - List cacheControlHeader = Optional.ofNullable(headers.get(HttpHeaders.CACHE_CONTROL)) - .orElse(Collections.emptyList()); + List cacheControlHeader = headers.getOrEmpty(HttpHeaders.CACHE_CONTROL); return cacheControlHeader.stream().noneMatch(forbiddenCacheControlValues::contains); }