https://issues.apache.org/bugzilla/show_bug.cgi?id=47136
Summary: Tomcat Compression limited to 48K
Product: Tomcat 6
Version: 6.0.18
Platform: PC
URL: N/A
OS/Version: Windows XP
Status: NEW
Severity: normal
Priority: P2
Component: Connectors
AssignedTo: [email protected]
ReportedBy: [email protected]
CONFIGURATION
Windows XP (SP3)
Apache Tomcat 6.0.18
Java 1.6.0_13-b03
SPECIAL TOMCAT SETTINGS
Set on the Connector:
compression="force"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,
text/json,application/json"
noCompressionUserAgents="gozilla, traviata"
TEST CASE
1). Create a file exactly 48K in size somewhere in your tomcat structure that
is accessible to the outside.
2). Execute the following CURL command. (CURL required)
curl -s -o nul: -H "Pragma: no-cache" -H "Cache-Control: no-cache" -w " Bytes
Uncompressed ... %{size_download}\n" <INSERT URL TO FILE HERE>
3). Make a note of the uncompressed file size.
4). Execute the following CURL command.
curl -s -o nul: -H "Pragma: no-cache" -H "Cache-Control: no-cache" -w " Bytes
Uncompressed ... %{size_download}\n" --compressed <INSERT URL TO FILE HERE>
5). Make a note of the compressed file size.
6). Add exactly one byte the file from step #1.
7). Wait 10 seconds or so to allow your tomcat install time to notice the
changed file.
8). Execute the following CURL command. (CURL required)
curl -s -o nul: -H "Pragma: no-cache" -H "Cache-Control: no-cache" -w " Bytes
Uncompressed ... %%{size_download}\n" <INSERT URL TO FILE HERE>
9). Make a note of the uncompressed file size.
10). Execute the following CURL command.
curl -s -o nul: -H "Pragma: no-cache" -H "Cache-Control: no-cache" -w " Bytes
Uncompressed ... %%{size_download}\n" --compressed <INSERT URL TO FILE HERE>
11). Make a note of the compressed file size.
OBSERVATION
The uncompressed and compressed numbers from steps 3 and 5 are different, as
expected. The uncompressed and compressed numbers from steps 7 and 9 are the
same. This indicates that for any file in excess of 49152 bytes (exactly 48k),
compression is not being used.
DESIRED RESULTS
Compression should be used regardless of file size.
TEST SCRIPT
I have included a sample Batch Script which will perform this test case. The
script will run on Windowx XP and requires CURL and PING installed and
configured into the PATH.
@ECHO off
REM SETUP VARS
SET FILENAME=test.css
SET CURLOPTS=-s -o nul: -H "Pragma: no-cache" -H "Cache-Control: no-cache"
SET URL=localhost/idp/%FILENAME%
echo.
echo Performing Test Case for 48K Maximum Size Limit on Tomcat Compression.
echo.
echo Please be patient during test as some test may take a minute or so echo to
run to completion.
echo.
echo Testing file of 48k...
DEL %FILENAME% /Q > nul: 2>&1
call :writefirst
call :wait 10
call :test
echo.
echo Testing file of 48k plus 1 byte.
DEL %FILENAME% /Q > nul: 2>&1
call :writesecond
call :wait 10
call :test
del %FILENAME% /y > nul: 2>&1
echo.
echo Test Complete.
GOTO :EOF
REM Function for performing the test.
:test
CURL %CURLOPTS% -w " Bytes Uncompressed ... %%{size_download}\n" %URL% CURL
%CURLOPTS% -w " Bytes Compressed ..... %%{size_download}\n" --compressed %URL%
GOTO :EOF
REM Function for waiting N seconds, requires PING in the path. N is specified
in the %1 parameter :wait PING 127.0.0.1 -n %1 -w 1000 > nul GOTO :EOF
:writefirst
call :writesixteenk
call :writesixteenk
call :writesixteenk
goto :EOF
:writesecond
call :writesixteenk
call :writesixteenk
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
echo //twelve bytes-twelve bytes-twelve bytes-twelve
bytes.........1>>%FILENAME% goto :EOF
:writesixteenk
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
call :writeonek
goto :EOF
:writeonek
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
call :writesixtyfourbytes
:goto EOF
:writesixtyfourbytes
echo //twelve bytes-twelve bytes-twelve bytes-twelve bytes.........>>%FILENAME%
goto :EOF
--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]