È£½ºÆà »çÀÌÆ®¿¡¼­ gzip ¾ÐÃà »ç¿ëÇϱâ
°Ô½ÃÀÏ: 2004/11/25 | ±Û¾´ÀÌ: doa | 17563 ¹ø | ÇÁ¸°Æ® | ¸ÞÀÏ


»ç½Ç ÀÌ ÆÁÀº ÇÊÀÚÀÇ È¨ÆäÀÌÁöÀÇ Æ®·¡ÇÈÀÌ ºÎÁ·ÇÏÁö ¾Ê¾Ò´Ù¸é Àý´ë ³ª¿Ã ¼ö ¾ø´Â ÆÁÀ̾ú´Ù. ÀÛ³â 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.

  1. ¸ÞÀÎ ¶óÀ̺귯¸® ÆÄÀÏ(¿¹: 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); } }



  2. µ¿ÀûÀ¸·Î ÆÄÀÏÀ» »ý¼ºÇÏ´Â 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°¡ °³¹ßÇÑ ÇÔ¼öÀÌ´Ù.


»õ·Î¿î P2P ÇÁ·Î±×·¥, BitTorrent BitTorrent´Â ÇÊÀÚ°¡ ¼Ò°³ÇÑ eDonkey³ª eMule°ú ºñ½Á... (32195) 2004-11-25
º¸³»±â ¸Þ´º À§Ä¡ ¹Ù²Ù±â ÇÊÀÚÀÇ ÀÌÀü ÆÁ, º¸³»±â ¸Þ´º¿¡¼­ A: µå¶óÀ̺ê Á¦°ÅÇϱ⸦ ¾²... (5206)2004-11-25

QAOS.com¿¡ °Ô½ÃµÈÁö 1³â ÀÌ»óµÈ ÀÚ·á¿Í °ü¸®ÀÚ°¡ °ø°³ÇÑ ÀÚ·á´Â ´©±¸³ª Á¦ÇѾøÀÌ ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù.
±×·¯³ª QAOS.comÀÇ ÀڷḦ ÆÛ°¡´Â °ÍÀº ±ÝÁöÇÏ°í ÀÖ½À´Ï´Ù.

ÀÌ Á¤º¸°¡ À¯¿ëÇÏ´Ù°í »ý°¢µÇ½Ã¸é QAOS.com°ú ¸¹Àº ´Ù¸¥ »ç¶÷µéÀ» À§ÇØ ÆÛ°¡±â º¸´Ù´Â ¸µÅ©·Î ¾Ë·ÁÁֽñ⠹ٶø´Ï´Ù.

¼¼»ó»ç´Â À̾߱â



RSS ±¸µ¶ (À͸í | ȸ¿ø | °­Á | Æ÷·³)
(C) 1996 ~ 2017 QAOS.com All rights reserved.