Repository: tapestry-5 Updated Branches: refs/heads/master a338a2f07 -> 8e7cc4e35
TAP5-2323: Tapestry may send a 304 response to a browser that has an asset who minimized/non-minimized state does not match the server's configuration Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/8e7cc4e3 Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/8e7cc4e3 Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/8e7cc4e3 Branch: refs/heads/master Commit: 8e7cc4e35279dab583d8e06ba4e3b4e17292a13e Parents: a338a2f Author: Howard M. Lewis Ship <hls...@apache.org> Authored: Tue Aug 26 15:34:10 2014 -0700 Committer: Howard M. Lewis Ship <hls...@apache.org> Committed: Tue Aug 26 15:34:10 2014 -0700 ---------------------------------------------------------------------- .../internal/services/ResourceStreamerImpl.java | 37 ++++++++++---------- 1 file changed, 19 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/8e7cc4e3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java ---------------------------------------------------------------------- diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java index ce3d1ae..9176555 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java @@ -149,6 +149,25 @@ public class ResourceStreamerImpl implements ResourceStreamer return false; } + + // ETag should be surrounded with quotes. + String token = QUOTE + actualChecksum + QUOTE; + + // Even when sending a 304, we want the ETag associated with the request. + // In most cases (except JavaScript modules), the checksum is also embedded into the URL. + // However, E-Tags are also useful for enabling caching inside intermediate servers, CDNs, etc. + response.setHeader("ETag", token); + + // If the client can send the correct ETag token, then its cache already contains the correct + // content. + String providedToken = request.getHeader("If-None-Match"); + + if (token.equals(providedToken)) + { + response.setStatus(HttpServletResponse.SC_NOT_MODIFIED); + return true; + } + long lastModified = streamable.getLastModified(); long ifModifiedSince; @@ -169,24 +188,6 @@ public class ResourceStreamerImpl implements ResourceStreamer return true; } - // ETag should be surrounded with quotes. - String token = QUOTE + actualChecksum + QUOTE; - - // Even when sending a 304, we want the ETag associated with the request. - // In most cases (except JavaScript modules), the checksum is also embedded into the URL. - // However, E-Tags are also useful for enabling caching inside intermediate servers, CDNs, etc. - response.setHeader("ETag", token); - - // If the client can send the correct ETag token, then its cache already contains the correct - // content. - String providedToken = request.getHeader("If-None-Match"); - - if (token.equals(providedToken)) - { - response.setStatus(HttpServletResponse.SC_NOT_MODIFIED); - return true; - } - // Prevent the upstream code from compressing when we don't want to. response.disableCompression();