X-Git-Url: https://juplo.de/gitweb/?p=percentcodec;a=blobdiff_plain;f=utils%2Fcachecontrol%2Fsrc%2Fmain%2Fjava%2Fde%2Fhalbekunst%2Futils%2Fcachecontrol%2FCacheControlInterceptor.java;h=bc2dd3d804e07d19a9022411e19dda8e0490195f;hp=35b7753f2c2319df992a4b13a2ea20c221754c1e;hb=5631089689b322f78d21135521b23e3c531279c8;hpb=0295b3393e61631c857497a1d5872538d72a37e7 diff --git a/utils/cachecontrol/src/main/java/de/halbekunst/utils/cachecontrol/CacheControlInterceptor.java b/utils/cachecontrol/src/main/java/de/halbekunst/utils/cachecontrol/CacheControlInterceptor.java index 35b7753f..bc2dd3d8 100644 --- a/utils/cachecontrol/src/main/java/de/halbekunst/utils/cachecontrol/CacheControlInterceptor.java +++ b/utils/cachecontrol/src/main/java/de/halbekunst/utils/cachecontrol/CacheControlInterceptor.java @@ -65,7 +65,14 @@ public class CacheControlInterceptor implements HandlerInterceptor { return true; } - long ifModifiedSince = request.getDateHeader(HEADER_IF_MODIFIED_SINCE); + long ifModifiedSince = -1; + try { + ifModifiedSince = request.getDateHeader(HEADER_IF_MODIFIED_SINCE); + } + catch (Exception e) { + log.error("Exception while fetching If-Modified-Since: {}", e); + } + long lastModified = cacheable.getLastModified(request); /** @@ -89,11 +96,14 @@ public class CacheControlInterceptor implements HandlerInterceptor { } - if (ifModifiedSince >= lastModified) { + if (ifModifiedSince >= lastModified && lastModified > 0) { /** * request.getDateHeader liefert die Zeit als long, oder -1, wenn der * Header nicht existiert. D.h., wenn "If-Modified-Since" nicht gesetzt * ist, wird die komplette Seite ausgeliefert. + * Der zusätzliche Test, ob lastModified größer 0 ist, ist nötig, um + * Fehler auszuschließen, wenn die Implementierung von Cachable + * negative Werte für Last-Modified zurückliefert. */ if (log.isDebugEnabled()) log.debug("Not modified since {}: {}", new Date(ifModifiedSince), request.getRequestURI()); @@ -166,7 +176,7 @@ public class CacheControlInterceptor implements HandlerInterceptor { } return true; - } + } catch (ClassCastException e) { return true; }