»ç½Ç ÀÌ ÆÁÀº ÇÊÀÚÀÇ È¨ÆäÀÌÁöÀÇ Æ®·¡ÇÈÀÌ ºÎÁ·ÇÏÁö ¾Ê¾Ò´Ù¸é Àý´ë ³ª¿Ã ¼ö ¾ø´Â ÆÁÀ̾ú´Ù. ÀÛ³â 9¿ù°æ ÀÚü ¼¹ö·Î ¿î¿µÇÏ´ø ȨÆäÀÌÁö¸¦ À¥ È£½ºÆÃÀ¸·Î º¯°æÇß´Ù. º¯°æÇÏ¸é¼ °¡Àå Å« ¹®Á¦´Â Æ®·¡ÇÈÀ̾ú´Ù. Æ®·¡ÇÈ ¿©À¯°¡ ÀÖ´Â »ç¾çÀº ±ÝÀüÀûÀÎ ¹®Á¦°¡ ¹ß»ýÇÏ°í, ±ÝÀüÀûÀ¸·Î ºÎ´ãÀÌ ¾ø´Â ½Ã½ºÅÛÀÇ °æ¿ì Æ®·¡ÇÈ ÃÊ°ú°¡ ³Ê¹« ºó¹øÇÏ°Ô ¹ß»ýÇß¾ú´Ù.
±×·¯´Ù°¡ HTML ÆÄÀÏÀ» ¾ÐÃàÇؼ Àü¼ÛÇϸé Æ®·¡ÇÈÀÌ »ó´çÈ÷ ÁÙÀ»°Å¶ó´Â »ý°¢ÀÌ µé¾ú´Ù. ÀÌ·± »ý°¢À» ÇÏ°ÔµÈ ±Ùº»ÀûÀÎ µ¿±â´Â ÇÊÀÚÀÇ
CGI °Á¿¡¼ ¾Ë ¼ö ÀÖÁö¸¸
HTTP/1.1ÀÇ °æ¿ì ±âº» ÀÎÄÚµùÀÌ gzipÀ̾ú±â ¶§¹®ÀÌ´Ù.
ÀÌ ÆÁÀº ±Ùº»ÀûÀ¸·Î
HTTP/1.1¿¡¼¸¸ µ¿ÀÛÇÑ´Ù
ÁÖ1. ±× ÀÌÀ¯´Â ¾Õ¼ ¼³¸íÇßµí
HTTP/1.0¿¡¼´Â gzip ÀÎÄÚµùÀ» Áö¿øÇÏÁö ¾Ê±â¶§¹®ÀÌ´Ù.
PHP¿¡ÀÇÇØ ½Ç½Ã°£À¸·Î »ý¼ºµÈ ÆÄÀÏÀ»
gzipÀ¸·Î ¾ÐÃàÇÏ´Â ¹æ¹ýÀº ¿©·¯°¡Áö°¡ ÀÖ´Ù. ÀÚü ¼¹ö¸¦ ±âµ¿ÇÏ´Â °æ¿ì¿¡´Â
mod_gzip 
À̶ó´Â ¸ðµâÀ» ¼³Ä¡ÇÏ¸é µÈ´Ù. ±×·¯³ª ÀÚü¼¹ö¸¦ ÀÌ¿ëÇÏ´Â »ç¶÷À̶ó¸é ´ç¿¬ÇÑ ¾ê±âÁö¸¸ Æ®·¡ÇÈÀ» °í¹ÎÇÑ ÇÊ¿ä´Â ¾ø´Ù.
Æ®·¡ÇÈ ¹®Á¦·Î ¾ÐÃàÀ» ÇÊ¿ä·ÎÇÏ´Â »ç¶÷ÀÇ °æ¿ì È£½ºÆà ¼¹ö¿¡
mod_gzipÀ» ¼³Ä¡ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾ø´Ù. ±×·¯³ª Å©°Ô °ÆÁ¤ÇÒ ÇÊ¿ä´Â ¾ø´Ù.
PHP ÀÚü³»¿¡¼
gzipÀ» Áö¿øÇϹǷΠPHP ÀÚü¿¡¼ Áö¿øÇÏ´Â
gzip ÇÔ¼ö¸¦ ÀÌ¿ëÇؼ ¾ÐÃà Àü¼ÛÇϸéµÈ´Ù. ÀýÂ÷´Â ´ÙÀ½°ú °°´Ù
ÁÖ2.
- ¸ÞÀÎ ¶óÀ̺귯¸® ÆÄÀÏ(¿¹: main.php)¿¡ ´ÙÀ½°ú °°Àº µÎ°³ÀÇ ÇÔ¼ö¸¦ µî·ÏÇÑ´Ù.
/* ºê·Î¿ìÀú°¡ gzip ÀÎÄÚµùÀ» Áö¿øÇÏ´ÂÁö ÆÇÁ¤ÇÏ´Â ÇÔ¼ö */
function CheckCanGzip(){
global $_SERVER;
if (headers_sent() || connection_aborted()){
return 0;
}
if (strpos($_SERVER[HTTP_ACCEPT_ENCODING], 'x-gzip') !== false) return "x-gzip";
if (strpos($_SERVER[HTTP_ACCEPT_ENCODING],'gzip') !== false) return "gzip";
return 0;
}
/* $level = ¾ÐÃà ·¹º§, 0=¾ÐÃà ¾ÈÇÔ, 9=ÃÖ´ë */
function GzDocOut($level=9,$debug=0){
global $phpEx;
$ENCODING = CheckCanGzip();
// gzip Å×½ºÆÃÀ» À§ÇÑ Çà. ´ÙÀ½ ÇàÀÇ ÁÖ¼®À» Á¦°ÅÇÏ¸é ¹«Á¶°Ç gzipÀ¸·Î ¾ÐÃàÇؼ Àü¼ÛÇϸç,
// ´ÙÀ½ÇàÀ» »èÁ¦ÇÏ¸é ºê·Î¿ìÀú°¡ gzip ÀÎÄÚµùÀ» Áö¿øÇÏ´Â °æ¿ì¿¡¸¸ gzipÀ¸·Î ¾ÐÃàÇؼ Àü¼ÛÇÔ.
// $ENCODING = 'gzip';
if ($ENCODING){
print "\n<!-- Use compress $ENCODING -->\n";
$Contents = ob_get_contents();
ob_end_clean();
if ($debug){
$s = "<p>Not compress length: ".strlen($Contents);
$s .= "<br>Compressed length: ".strlen(gzcompress($Contents,$level));
$Contents .= $s;
}
header("Content-Encoding: $ENCODING");
print "\x1f\x8b\x08\x00\x00\x00\x00\x00";
$Size = strlen($Contents);
$Crc = crc32($Contents);
$Contents = gzcompress($Contents,$level);
$Contents = substr($Contents, 0, strlen($Contents) - 4);
print $Contents;
print pack('V',$Crc);
print pack('V',$Size);
}
}
- µ¿ÀûÀ¸·Î ÆÄÀÏÀ» »ý¼ºÇÏ´Â PHP ÆÄÀÏ(¿¹: index.php)À» ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î ÀÛ¼ºÇÑ´Ù.
<?
include("main.php");
ob_start(); // ¹Ýµå½Ã ¹®¼¸¦ Ãâ·ÂÇϱâÀü¿¡ ±âµ¿ÇؾßÇÔ
ob_implicit_flush(0);
?>
...
...
...
<?
GzDocOut(); // ½Ç½Ã°£ ¾ÐÃà ÇÔ¼ö È£Ãâ
ob_end_flush();
?>
½ÇÁ¦
gzipÀ¸·Î ¾ÐÃàµÇ¾î Àü¼ÛµÇ´ÂÁö È®ÀÎÇÏ·Á¸é
// $ENCODING = 'gzip'; ÇàÀÇ ÁÖ¼®À» Á¦°ÅÇÏ°í ´Ù¿î·Îµå °¡¼Ó±â(¿¹:
FlashGet,
Net Transport)·Î ´Ù¿îÀ» ¹Þ¾Æº¸¸éµÈ´Ù.
´Ù¿î·Îµå: ¼Ò½º Àû¿ëÀÌ Á¶±Ý ¾î·Á¿î »ç¿ëÀÚ´Â ´ÙÀ½ ¸µÅ©¿¡¼ ¿¹Á¦ ÆÄÀÏÀ» ´Ù¿î¹Þ¾Æ Å×½ºÆ®Çغ¸±â ¹Ù¶õ´Ù. ¾ÐÃà ÆÄÀÏ¿¡´Â ´ÙÀ½°ú °°Àº ÆÄÀÏÀÌ Æ÷ÇԵǾî ÀÖ´Ù.
gzip.php // Gzip ¾ÐÃà¿ë ¶óÀ̺귯¸®
test.php // Gzip ¾ÐÃàÀ» Å×½ºÆ®ÇÏ´Â ¿¹Á¦ ÆÄÀÏ
´Ù¿î·Îµå:
php_gzip.zip
ÁÖ1:
QAOS.com Á¢¼Ó½Ã ´Ù¿î·Îµå âÀÌ ¶ß´Â °æ¿ì¸¦ ÂüÁ¶Çϸé ÀÎÅÍ³Ý Å½»ö±â¿¡¼´Â
HTTP/1.1ÀÇ Áö¿ø ¿©ºÎ¸¦ »ç¿ëÀÚ°¡ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.
ÁÖ2: ÀÌ ÆÁ¿¡¼ ¼Ò°³ÇÏ´Â µÎ ÇÔ¼ö´Â ÇÊÀÚ°¡ °³¹ßÇÑ °ÍÀÌ ¾Æ´Ï¶ó
catoc°¡ °³¹ßÇÑ ÇÔ¼öÀÌ´Ù.