I am using tomcat8 and trying to simulate GZIP compression of CSS and JS. I have added the entry in server.xml and follows
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,text/json,application/x-javascript,application/javascript,application/json" />
And in my html page i have included the script as follows
<script type="text/javascript" src="extjs/ext-all-debug.js"></script>
But while accessing the page, compression is not happening and resposne header received as follows.
Remote Address:[::1]:8088
Request URL:http://localhost:8088/test/extjs/ext-all-debug.js
Request Method:GET
Status Code:200 OK
Response Headers
view source
Accept-Ranges:bytes
Content-Length:4585183
Content-Type:application/javascript
Date:Wed, 03 Jun 2015 00:34:12 GMT
ETag:W/"4585183-1427778288000"
Last-Modified:Tue, 31 Mar 2015 05:04:48 GMT
Server:Apache-Coyote/1.1
Request Headers
view source
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Host:localhost:8088
Referer:http://localhost:8088/test/index.html
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36
Please help me to find what went wrong here. The same is happening when i do this setting in remote server.
I added attribute useSendfile with value false.
The manual says:
(bool)Use this attribute to enable or disable sendfile capability. The default value is true. Note that the use of sendfile will disable any compression that Tomcat may otherwise have performed on the response.
My tomcat8 is now compressing a large html-file.
My connector:
Fiddler info:
I came across the same problem while working on an angularjs application with tomcat8. It had some large js files.Setting useSendfile to 'false' helped partially, in the sense some files got compressed but not all of them. On further research I found that it is necessary to add 'application/javascript' also in the compressableMimeType. That worked for all the javascript files.
From tomcat8 documentation
FYI for anyone attempting to use compression="force" attribute on the Connector. "force" is only force if the client supports compression.
Note the force is after the "Content-Encoding" header check...
Source