■ Apache
 
圧縮の設定(enabledにする)
# a2enmod deflate Module deflate already enabled
 
KeepAliveの設定(Offにする)
vim /etc/apache2/apache2.conf # # KeepAlive: Whether or not to allow persistent connections (more than # one request per connection). Set to "Off" to deactivate. # KeepAlive Off
 
再起動する
# /etc/init.d/apache2 restart * Restarting web server apache2 ... waiting
 
■ クライアント(Apache commons HTTPClient)
 
public static void main( String[] args ) throws Exception
{
	System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog");
	System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");
	System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire.header", "debug");
	System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient", "debug");
	HttpClient httpClient = new HttpClient();
	HttpMethod method =
			new GetMethod("http://localhost/hoge.php");  ★ Transfer-Encoding: chunked
			// new GetMethod("http://localhost/hoge.html"); ★ Content-Length
			//method.addRequestHeader("Accept-Encoding", "gzip"); ★ gzipするかどうか
	int status = httpClient.executeMethod(method);
	System.out.println("status:" + status);
	BufferedReader reader = new BufferedReader(
    		new InputStreamReader(method.getResponseBodyAsStream()));
	String line;
	while ((line = reader.readLine()) != null) {
    	//System.out.println(line);
    }
	reader.close();
}
 
■ コンテンツ
 
hoge.php
<?php phpinfo(); sleep(1); phpinfo(); sleep(1); phpinfo(); sleep(1); phpinfo(); ?>
 
hoge.html
<html> <head><title>hoge</title></head> <body> aaa bbb ccc ddd eee </body> </html>
 
■ 実行すると、、
 
hoge.php
2011/07/08 17:02:25:246 JST [DEBUG] header - << "Transfer-Encoding: chunked[r][n]"
 
hoge.html
2011/07/08 17:03:54:458 JST [DEBUG] header - << "Content-Length: 83[r][n]"
 
■ Accept-Encodingでgzipする
hoge.html
2011/07/08 17:05:39:360 JST [DEBUG] header - << "Content-Encoding: gzip[r][n]" 2011/07/08 17:05:39:360 JST [DEBUG] header - << "Content-Length: 83[r][n]"
 
hoge.php 
2011/07/08 17:06:24:120 JST [DEBUG] header - << "Content-Encoding: gzip[r][n]" 2011/07/08 17:06:24:120 JST [DEBUG] header - << "Connection: close[r][n]" 2011/07/08 17:06:24:121 JST [DEBUG] header - << "Transfer-Encoding: chunked[r][n]"
 
■ Transfer-Encoding: chunked でコンテンツのサイズが大きい場合
 
hoge.phpを以下のようにどでかくしてみました。
6046 phpinfo(); 6047 phpinfo(); 6048 phpinfo(); 6049 phpinfo();
↓普通に取得できました。
2011/07/08 17:16:33:781 JST [DEBUG] header - << "Vary: Accept-Encoding[r][n]" 2011/07/08 17:16:33:781 JST [DEBUG] header - << "Connection: close[r][n]" 2011/07/08 17:16:33:781 JST [DEBUG] header - << "Transfer-Encoding: chunked[r][n]" 2011/07/08 17:16:33:781 JST [DEBUG] header - << "Content-Type: text/html[r][n]" 2011/07/08 17:16:33:781 JST [DEBUG] header - << "[r][n]" status:200 2011/07/08 17:16:52:785 JST [DEBUG] header - << "[r][n]" 2011/07/08 17:16:52:786 JST [DEBUG] HttpMethodBase - Should close connection in response to directive: close 2011/07/08 17:16:52:786 JST [DEBUG] HttpConnection - Releasing connection back to connection manager.
 
addRequestHeader(“Accept-Encoding”, “gzip”)すると
2011/07/08 17:43:23:691 JST [DEBUG] header - << "Vary: Accept-Encoding[r][n]" 2011/07/08 17:43:23:691 JST [DEBUG] header - << "Content-Encoding: gzip[r][n]" 2011/07/08 17:43:23:691 JST [DEBUG] header - << "Connection: close[r][n]" 2011/07/08 17:43:23:691 JST [DEBUG] header - << "Transfer-Encoding: chunked[r][n]" 2011/07/08 17:43:23:691 JST [DEBUG] header - << "Content-Type: text/html[r][n]" 2011/07/08 17:43:23:692 JST [DEBUG] header - << "[r][n]" status:200 2011/07/08 17:43:58:939 JST [DEBUG] header - << "[r][n]"
  
  
  
  

コメント
[…] Content-LengthとTransfer-Encoding: chunked […]