Prevent resource transformation of gzipped CSS files

When resolved through the `GzipResourceResolver`, CSS files can be
resolved as their pre-gzipped variant, if a ".gz" file is present in the
configured resource locations.

Such resources are gzipped and thus should not be transformed by
`CssLinkResourceTransformer`s, since rewriting those would need to
uncompress/transform/recompress. This would lead to poorer performances
than resolving plain resources and delegating compression to the
container.

This commit checks for `GzippedResource` instances in
`CssLinkResourceTransformer` and avoids processing them.

Issue: SPR-14773
This commit is contained in:
Brian Clozel
2016-11-16 10:26:09 +01:00
parent a4f1842738
commit cb44f2746e
6 changed files with 82 additions and 25 deletions

View File

@@ -70,7 +70,8 @@ public class CssLinkResourceTransformer extends ResourceTransformerSupport {
resource = transformerChain.transform(request, resource);
String filename = resource.getFilename();
if (!"css".equals(StringUtils.getFilenameExtension(filename))) {
if (!"css".equals(StringUtils.getFilenameExtension(filename)) ||
resource instanceof GzipResourceResolver.GzippedResource) {
return resource;
}

View File

@@ -78,7 +78,7 @@ public class GzipResourceResolver extends AbstractResourceResolver {
}
private static final class GzippedResource extends AbstractResource implements HttpResource {
static final class GzippedResource extends AbstractResource implements HttpResource {
private final Resource original;