GZIP£¨GNU-ZIP£©ÊÇÒ»ÖÖѹËõ¼¼Êõ¡£¾¹ýGZIPѹËõºóÒ³Ãæ´óС¿ÉÒÔ±äΪÔÀ´µÄ30%ÉõÖÁ¸üС¡£ÕâÑùÓû§ä¯ÀÀµÄʱºò¾Í»á¸Ð¾õºÜˬºÜÓä¿ì£¡
ҪʵÏÖGZIPѹËõÒ³ÃæÐèÒªä¯ÀÀÆ÷ºÍ·þÎñÆ÷¹²Í¬Ö§³Ö£¬Êµ¼ÊÉϾÍÊÇ·þÎñÆ÷ѹËõ£¬´«µ½ä¯ÀÀÆ÷ºóä¯ÀÀÆ÷½âѹ²¢½âÎö¡£ä¯ÀÀÆ÷ÄDZ߲»ÐèÒªÎÒÃǵ£ÐÄ£¬ÒòΪÏÖÔÚ¾ø´ó¶àÊýä¯ÀÀÆ÷¶¼Ö§³Ö½âÎöGZIP¹ýµÄÒ³Ãæ¡£ÎÒÃÇÖ»Òª°ÑÒ³ÃæÔÚ·þÎñÆ÷¶ËѹËõÔÙÊä³öµ½ä¯ÀÀÆ÷¾ÍÐÐÁË¡£
ÓеãÂÞ࣬ÏÂÃæËµÕýÊ£º
ÕýÈçÒªÖÆ×÷ѹËõ±ý¸É£¬ÏÈÒªÄõ½ÔÁÏ£¬ÒªÑ¹ËõÒ»¸öÒ³Ãæ£¬Ê×ÏÈÒª»ñµÃÒªÊä³öµÄÄÚÈÝ¡£PHPÖеÄob_start()£¨ob=>outputbuffer£©º¯Êý¿ÉÒÔʵÏÖÕâ¸ö¹¦ÄÜ£¬Ëü¿ÉÒ԰ѳÌÐòÀï×¼±¸Êä³öµÄÄÚÈÝÏȷŵ½Ò»¸ö½Ð×ö“»º³åÇø”µÄµØ·½£¬µ±È»£¬Äã¿ÉÒÔÀí½âÎªÖÆ×÷ѹËõ±ý¸ÉµÄÔÝʱ·ÅÔÁϵŤ×÷̨¡£
Õâ¸öº¯ÊýÒ»¶¨ÒªÔÚÒ³ÃæÊä³ö֮ǰʹÓã¬ËùÒÔÒ»°ã°ÑËü·ÅÔÚ´úÂëµÄ×î¶¥¶Ë¡£ÒòΪËü¾ÍÏñÊÇÒ»¸ö¹¤×÷̨£¬ËùÒÔÄãÒªÔÚÔÁϵ½À´Ö®Ç°¾ÍҪ׼±¸ºÃËü£¬·ñÔòÔÁÏÀ´ÁËûµØ·½·Å£¬»á³öÎÊÌâµÄ¡£ÓÃob_start()µÃµ½ÒªÑ¹ËõµÄÒ³ÃæÖ®ºó£¬ÎÒÃǾͿÉÒÔÖÆ×÷ѹËõ±ý¸ÉÁË£¬²»¶Ô£¬Ó¦¸ÃÊÇ¿ÉÒÔѹËõÒ³ÃæÁË£¡²»¹ýºÃÏñ»¹È±ÉÙһ̨ѹËõ»ú£¬EZ£¬ÎÒÃÇÓÃPHP´øµÄzlibÀ©Õ¹×öһ̨£º
functionob_gzip( content)// content¾ÍÊÇҪѹËõµÄÒ³ÃæÄÚÈÝ£¬»òÕß˵±ý¸ÉÔÁÏ
{
if(!headers_sent()&&//Èç¹ûÒ³ÃæÍ·²¿ÐÅÏ¢»¹Ã»ÓÐÊä³ö
extension_loaded("zlib")&&//¶øÇÒzlibÀ©Õ¹ÒѾ¼ÓÔØµ½PHPÖÐ
strstr( _SERVER["HTTP_ACCEPT_ENCODING"],"gzip"))//¶øÇÒä¯ÀÀÆ÷˵Ëü¿ÉÒÔ½ÓÊÜGZIPµÄÒ³Ãæ
{
content=gzencode( content."\n//´ËÒ³ÒÑѹËõ",9);Ϊ׼±¸Ñ¹ËõµÄÄÚÈÝÌùÉÏ“//´ËÒ³ÒÑѹËõ”µÄ×¢ÊͱêÇ©£¬È»ºóÓÃzlibÌṩµÄgzencode()º¯ÊýÖ´Ðм¶±ðΪ9µÄѹËõ£¬Õâ¸ö²ÎÊýÖµ·¶Î§ÊÇ0-9£¬0±íʾÎÞѹËõ£¬9±íʾ×î´óѹËõ£¬µ±È»Ñ¹Ëõ³Ì¶ÈÔ½¸ßÔ½·ÑCPU¡£
//È»ºóÓÃheader()º¯Êý¸øä¯ÀÀÆ÷·¢ËÍһЩͷ²¿ÐÅÏ¢£¬¸æËßä¯ÀÀÆ÷Õâ¸öÒ³ÃæÒѾÓÃGZIPѹËõ¹ýÁË£¡
header("Content-Encoding:gzip");
header("Vary:Accept-Encoding");
header("Content-Length:".strlen( content));
}
return content;//·µ»ØÑ¹ËõµÄÄÚÈÝ£¬»òÕß˵°ÑѹËõºÃµÄ±ý¸ÉËͻع¤×÷̨¡£
}
ѹËõ»ú×öºÃÁËÖ®ºó£¬ÎÒÃǰÑѹËõ»ú·Åµ½¹¤×÷̨ÉÏ£¬ÓÚÊÇÔÀ´µÄob_start()±ä³É
ob_start('ob_gzip');//û´í£¬¾ÍÊǸøob_start()¼ÓÒ»¸ö²ÎÊý£¬²ÎÊýÃû¾ÍÊÇÎÒÃǸղÅ×öµÄ“ѹËõ»ú”µÄº¯ÊýÃû¡£ÕâÑùµ±ÄÚÈݽøÈ뻺³åÇøºóPHP¾Í»áµ÷ÓÃob_gzipº¯Êý°ÑËüѹËõÁË¡£
ºÃÁË£¬ËùÓеŤ×÷ÒÑÍê³É£¬×îºó½»»õ£º
ob_end_flush();//½áÊø»º³åÇø£¬Êä³öÄÚÈÝ¡£µ±È»£¬²»ÓÃÕâ¸öº¯ÊýÒ²ÐУ¬ÒòΪ³ÌÐòÖ´Ðе½×îºó»á×Ô¶¯½«»º³åÇøÄÚÈÝÊä³ö¡£
ÍêÕûµÄʾÀýÈçÏ£º
<?php
//ÆôÓÃÒ»¸ö´øÓÐob_gzipѹËõ»úµÄ¹¤×÷̨
ob_start('ob_gzip');
//×¼±¸Ò»Ð©´ýѹËõµÄÄÚÈÝ
for( i=0; i<100; i++)
{
echo('ÕâÀïÊÇѹËõ±ý¸ÉµÄÔÁÏ£¬ÕâÀïÊÇѹËõ±ý¸ÉµÄÔÁÏ£¬ÔÁÏ');
}
//Êä³öѹËõ³É¹û
ob_end_flush();
//ÕâÊÇob_gzipѹËõ»ú
functionob_gzip( content)
{
if(!headers_sent()&&
extension_loaded("zlib")&&
strstr( _SERVER["HTTP_ACCEPT_ENCODING"],"gzip"))
{
content=gzencode( content."\n//´ËÒ³ÒÑѹËõ",9);
header("Content-Encoding:gzip");
header("Vary:Accept-Encoding");
header("Content-Length:".strlen( content));
}
return content;
}
?>
¾¹ýʵ¼Ê²âÊÔ£¬ÉÏÃæ´úÂëÖÐÈç¹û²»ÓÃGZIP£¬ÊÇ4.69KB=4802.56B£¬ÆôÓÃGZIPºóËõСΪ104B£¬ßÀ……ÎÒÊýѧ¿ÉÄܲ»ºÃ£¬×Ô¼ºËãÏÂѹËõµ½ÁËÔÀ´µÄ°Ù·ÖÖ®¶àÉÙ°É¡£¡£
ÁíÍ⣬ÏÂÃæÊÇÓÃFlashGet»ñÈ¡µÄÈÕÖ¾ÐÅÏ¢£¬¿ÉÒÔ¿´µ½ÎÒÃdzÌÐòÀï¼ÓµÄheaderÐÅÏ¢£º
FriJan2517:53:102008HTTP/1.1200OK
FriJan2517:53:102008Server:Microsoft-IIS/5.1
FriJan2517:53:102008Date:Fri,25Jan200809:53:10GMT
FriJan2517:53:102008Connection:close
FriJan2517:53:102008X-Powered-By:PHP/5.2.5
FriJan2517:53:102008Content-Encoding:gzip
FriJan2517:53:102008Vary:Accept-Encoding
FriJan2517:53:102008Content-Length:104
FriJan2517:53:102008Content-type:text/html
ÎÄÕÂÆÀÂÛ
¹²ÓÐÎ»ÍøÓÑ·¢±íÁËÆÀÂÛ ²é¿´ËùÓÐÆÀÂÛ