Index: src/main/java/info/magnolia/module/cache/executor/SetExpirationHeaders.java =================================================================== --- src/main/java/info/magnolia/module/cache/executor/SetExpirationHeaders.java (revision 20033) +++ src/main/java/info/magnolia/module/cache/executor/SetExpirationHeaders.java (working copy) @@ -39,17 +39,12 @@ import info.magnolia.module.cache.CachePolicyResult; import java.io.IOException; -import java.util.Date; -import java.util.Locale; -import java.util.TimeZone; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.commons.lang.time.FastDateFormat; - /** * TODO : avoid duplication with CacheHeadersFilter ??? * @@ -57,7 +52,6 @@ * @version $Revision$ ($Author$) */ public class SetExpirationHeaders extends AbstractExecutor { - private final FastDateFormat formatter = FastDateFormat.getInstance("EEE, d MMM yyyy HH:mm:ss zzz", TimeZone.getTimeZone("GMT"), Locale.ENGLISH); public void processCacheRequest(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Cache cache, @@ -66,17 +60,15 @@ BrowserCachePolicy browserCachePolicy = this.getCacheConfiguration().getBrowserCachePolicy(); BrowserCachePolicyResult clientCacheResult = browserCachePolicy.canCacheOnClient(cachePolicyResult); - if (clientCacheResult == BrowserCachePolicyResult.NO_CACHE) { + if (clientCacheResult.getExpirationDate() == -1L) { response.setHeader("Pragma", "No-cache"); - response.setHeader("Cache-Control", "no-cache"); - response.setDateHeader("Expires", 0); - response.setHeader("Expires", "Fri, 30 Oct 1998 14:19:41 GMT"); + response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate, max-age=0"); + response.setDateHeader("Expires", 0L); } else { - final long maxAgeSeconds = (clientCacheResult.getExpirationDate() - System.currentTimeMillis()) / 1000; + final long maxAgeSeconds = (clientCacheResult.getExpirationDate() - System.currentTimeMillis()) / 1000L; response.setHeader("Pragma", ""); response.setHeader("Cache-Control", "max-age=" + maxAgeSeconds + ", public"); - // TODO : use setDateHeader ? - response.setHeader("Expires", formatter.format(new Date(clientCacheResult.getExpirationDate()))); + response.setDateHeader("Expires", clientCacheResult.getExpirationDate()); } } } Index: src/test/java/info/magnolia/module/cache/executor/SetExpirationHeadersTest.java =================================================================== --- src/test/java/info/magnolia/module/cache/executor/SetExpirationHeadersTest.java (revision 20033) +++ src/test/java/info/magnolia/module/cache/executor/SetExpirationHeadersTest.java (working copy) @@ -60,7 +60,7 @@ response.setHeader("Pragma", ""); response.setHeader("Cache-Control", "max-age=1800, public"); - response.setHeader(eq("Expires"), isA(String.class)); + response.setDateHeader(eq("Expires"), anyLong()); replay(request, response, chain, cache); SetExpirationHeaders executor = new SetExpirationHeaders(); @@ -79,9 +79,8 @@ cacheConfig.setBrowserCachePolicy(fixed); response.setHeader("Pragma", "No-cache"); - response.setHeader("Cache-Control", "no-cache"); - response.setDateHeader("Expires", 0); - response.setHeader(eq("Expires"), isA(String.class)); + response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate, max-age=0"); + response.setDateHeader("Expires", 0L); replay(request, response, chain, cache); SetExpirationHeaders executor = new SetExpirationHeaders();