ʹÓà HTTP ÍÆËÍ£¬CSS ºÍ JS »áÔÚ HTML ÇëÇóµ½´ïÖ®ºó¾¡¿ìÍÆËͳöÈ¥£¬·¢ËÍËüÃÇÐèÒª
3 ¸ö RTT(ÓÖÒ»´ÎÒòΪÂýÆô¶¯)£¬ËüÃǽ«ÓµÈû´°¿ÚÔö´óÖÁ 128 KB ×óÓÒ£¬½«Òª·¢ËÍ HTML ʱ£¬Ò»¸ö
RTT ¾ÍÄÜ¿ÉÒÔÁË¡£

ÉÏÖÜÎÒÔÚ˹´ï¸ç¶ûĦסÁ˼¸Ì죬³öϯÁË HTTP ÑÐÌֻᣬ²ÎÓëÁ˲»ÉÙÎüÒýÈ˵ÄÌÖÂÛ¡£ÆäÖÐÒ»´ÎÊǹØÓÚ
HTTP ÍÆËͼ°ÆäÓÅȱµã¡¢ÔçÆÚʵÑé½á¹ûµÄ¡£
ÓÉÓÚÔçÆÚʵÑ鲿Êð½á¹û²»ÄÇôÀíÏ룬ÈËÃÇ¶Ô HTTP ÍÆËÍ´óÌå³Ö×Å»³ÒÉ̬¶È£¬²»¹ýÎÒÏë·ÖÏíÏÂ×Ô¼º¸üÀÖ¹ÛһЩµÄ¹Ûµã¡£
HTTP ÍÆËÍÄÜ×öÄÄЩԤ¼ÓÔØ²»ÄÜ×öµÄÊÂ?
´Ó»³ÒÉÕßÄÇÀïÒ»ÔÙÌýµ½µÄ¹ÛµãÊÇ£¬¡°ÍÆËÍÏà¶ÔÓÚÔ¤¼ÓÔØÀ´Ëµ£¬Ö»²»¹ý½ÚÊ¡ÁËÒ»´Î RTT(Round Trip Time)¶øÒÑ¡±¡£ÔÚʵ¼ùÖУ¬Õâ²¢·Ç×ÜÊǶԵģ¬ÓÐÒ»¸öʹÓð¸Àý£¬ÍÆËÍ¿ÉÒÔÍê³É£¬µ«Ô¤¼ÓÔØÎÞ·¨×öµ½¡£
ÀûÓ÷þÎñÆ÷˼¿¼Ê±¼ä(think-time)
Èç½ñ£¬HTML ÏìÓ¦ºÜÉÙÖ»Êǵ¥´¿µÄ¾²Ì¬×ÊÔ´ÁË¡£ËüÃÇͨ³£¶¼ÊÇͨ¹ýÊý¾Ý¿â»ñÈ¡ËùÐèµÄÐÅÏ¢¡¢Ê¹Óø߼¶ÓïÑÔ(¿ÉÄÜÂÔ΢ÂýһЩ)¶¯Ì¬Éú³ÉµÄ¡£ËäÈ»ºó¶ËÏìӦʱ¼äȷʵ¿ÉÒÔ¶øÇÒÓ¦µ±ÓÅ»¯£¬µ«¼¸°ÙºÁÃëµÄÏìӦʱ¼äÒ²²¢²»³£¼û¡£
ÓÐÒ»¸ö³£¼ûµÄ½¨Ò飬¡°ÌáÔç flush¡± HTML£¬ÔÚ²éѯÊý¾Ý¿â²¢¹¹½¨¶¯Ì¬ÄÚÈݵÄͬʱ£¬·¢ËÍ HTML µÄÊ׸ö
chunk ¿é¡£µ«ÊÇ£¬²¢·ÇËùÓзþÎñ¶ËµÄ¹¹¼Ü¶¼ÄÜÕâô¼òµ¥µØÊµÏÖ¡£
ÁíÍâÒ»¸öÈÃÎÊÌâ±äµÃÀ§ÄѵÄÒòËØÊÇ£¬ÐèÒª¿ªÊ¼Ïòä¯ÀÀÆ÷·¢ËÍÊý¾Ýʱ£¬ÎÒÃÇÉÐÎÞ·¨È·¶¨ÏìÓ¦µÄ¹¹½¨ÊÇ·ñ»áÍêÈ«³É¹¦¡£Îª±ÜÃâ³öÏÖÏìÓ¦´´½¨Âß¼³ö´í(±ÈÈç˵£¬Êý¾Ý¿â´íÎó»òÕß·þÎñ¶Ë´úÂëÔËÐÐʧ°Ü)£¬ÎÒÃÇÐèÒªÔÚÓ¦ÓÃÂß¼Öд´½¨Ò»ÖÖ¡°»Ø¹ö¡±ÒÑ·¢ËÍÏìÓ¦Êý¾ÝµÄ·½Ê½£¬²¢ÏòÓû§Õ¹Ê¾´íÎóÐÅÏ¢¡£
¾¡¹ÜÕâ¿Ï¶¨ÓпÉÄÜ×öµÃµ½(ÉõÖÁÊÇ×Ô¶¯»¯µÄ)£¬µ«Ä¿Ç°»¹Ã»ÓÐÒ»ÖÖͨÓõķ½Ê½Äܹ»×÷ΪÐÒéµÄÒ»²¿·Ö¡£
Òò´ËÒ»°ã³¡¾°ÊÇ£¬Web ·þÎñÆ÷µÈ´ýºó¶ËÊý°ÙºÁÃëÒÔ¹¹½¨Ò³Ã棬¶øºó¿ªÊ¼·µ»ØÊý¾Ý¡£ÕâʱºòÎÒÃǾÍÅöµ½ÁËÂýÆô¶¯(ÒëÕß×¢£ºslow
start£¬¿É²Î¿¼´ËÎÄ)£¬ËùÒÔÊ×´Î RTT Ö»ÄÜ·¢ËÍ´óÔ¼ 14 KB Êý¾Ý£¬µÚ¶þ´Î 28 KB ×óÓÒ£¬Èç´ËµÈµÈ¡£ÓÉ´ËÎÒÃÇÖªµÀ£¬½«
HTML ·¢ËͳöÈ¥£¬ÐèÒªÓÃÈ¥·þÎñÆ÷˼¿¼Ê±¼ä¼ÓÉÏÂýÆô¶¯Ê±¼ä¡£ÔÚ˼¿¼Ê±¼äÆÚ¼ä£¬ä¯ÀÀÆ÷¶Ô½ÓÏÂÀ´ËùÐèµÄ×ÊÔ´Ò»ÎÞËùÖª£¬¹ÊÒ²²»»áÕë¶Ô½ÓÏÂÀ´ËùÐè×ÊÔ´µÄ¹Ø¼ü·¾¶·¢ËÍÈκÎÇëÇó¡£
¶øÇÒ£¬¼´Ê¹ÎÒÃÇÊÔ×ÅˣС´ÏÃ÷£¬Õë¶ÔÄÇЩ×ÊÔ´Ìí¼Ó preload ±¨Í·£¬ÈôÎÒÃDz»ÌáÔç flush Îĵµ¿ªÍ·£¬ÄÇ»¹ÊÇûÓжÔ˼¿¼Ê±¼ä¼ÓÒÔÀûÓá£
ÏÖÔÚ£¬½«Õâ¸öÓëʹÓà HTTP ÍÆËÍÄÜ×öµÄÊÂÇé×ö¸ö¶Ô±È¡£·þÎñÆ÷¿ÉÒÔÀûÓÃ˼¿¼Ê±¼äÀ´ÍÆËÍÏà¹ØµÄ¹Ø¼üÐÔ×ÊÔ´ ¡ª¡ª
ÓÈÆäÊÇ CSS ºÍ JS¡£ÕâÑùÒ»À´£¬µ±Ë¼¿¼Ê±¼ä½áÊøÊ±£¬ÎÒÃǼ«ÓпÉÄÜÒѽ«ËùÓйؼüÐÔ×ÊÔ´¶¼ÍÆË͸øä¯ÀÀÆ÷ÁË¡£
»¹ÓжîÍâºÃ´¦£¬ÕâЩ×ÊÔ´Ò²Ô¤ÈÈÁË TCP Á¬½Ó£¬Ò²ÌáÉýÁËÓµÈû´°¿Ú(congestion window)£¬È·±£Ë¼¿¼Ê±¼äÖ®ºóµÄÊ׸ö
RTT ÖУ¬¿ÉÒÔʹÓà 28 KB£¬56 KB£¬ÄËÖÁ¸ü´óµÄÓµÈû´°¿Ú·¢ËÍ HTML(ÕâÈ¡¾öÓÚ˼¿¼Ê±¼äµÄ³¤¶Ì£¬ÒÔ¼°ÔÚ´ËÆÚ¼äÎÒÃÇÍÆËÍÁ˶àÉÙ×ÊÔ´)¡£
Ò»ÆðÀ´¿´Ï¾ßÌå°¸Àý£ºÒ»¸ö 120 KB µÄ HTML Ò³Ãæ£¬¹Ø¼ü CSS ÓÐ 24KB£¬¹Ø¼ü JS ÓÐ
74 KB£¬ÔÚ 100ms RTT¡¢ÎÞÏÞ´ø¿íµÄÍøÂç»·¾³ÏÂÊÇÈçºÎ¼ÓÔØµÄ?
ûÓÐ HTTP ÍÆË͵ÄÇé¿öÏ£¬Éú³É HTML µÈ´ýÁË 300ms£¬½Ó×Å 4 ´Î RTT ·¢ËÍ HTML£¬ÒòΪÂýÆô¶¯µÄÔµ¹Ê£¬Ê¹ÓÃÁËÒ»¸ö
RTT ÇëÇó JS ºÍ CSS¡£ÔÚÊ×´ÎäÖȾ֮ǰ£¬Ê±¼ä³¬¹ýÁË 800 ºÁÃë¡£

ÎÞÍÆËÍÇé¿öϵÄÒ³Ãæ¼ÓÔØ
ʹÓà HTTP ÍÆËÍ£¬CSS ºÍ JS »áÔÚ HTML ÇëÇóµ½´ïÖ®ºó¾¡¿ìÍÆËͳöÈ¥£¬·¢ËÍËüÃÇÐèÒª 3 ¸ö
RTT(ÓÖÒ»´ÎÒòΪÂýÆô¶¯)£¬ËüÃǽ«ÓµÈû´°¿ÚÔö´óÖÁ 128 KB ×óÓÒ£¬½«Òª·¢ËÍ HTML ʱ£¬Ò»¸ö RTT
¾ÍÄÜ¿ÉÒÔÁË¡£Ê×´ÎäÖȾ×Üʱ¼ä£º 400 ºÁÃë¡£

HTTP ÍÆËÍÇé¿öϵÄÒ³Ãæ¼ÓÔØ
Ê×´ÎäÖȾ¼ÓËÙÁË 50%!Ò²²»ËãºÜ²îÂï¡£¡£¡£
HTTP ÍÆËͲ»¾¡ÈçÒâµÄµØ·½
ÎÒÈÏΪÈËÃÇÔÚ´íÎóµØÊ¹Óà HTTP ÍÆË͵ÄÔÒòÖ®Ò»ÊÇ£¬ËûÃÇÔÚijЩ²¢²»ÄÜÌṩÈκκô¦ÉõÖÁËðº¦Ð§Âʵij¡¾°ÏÂʹÓÃËü¡£
Ã¤Ä¿ÍÆË;²Ì¬×ÊÔ´
ʹÓà HTTP ÍÆËÍ¿ÉÄÜ×öµÄ´íÊÂÖ®Ò»¾ÍÊǸæËßÄã×Ô¼º£¬¡°°¡£¬ÕâЩ×ÊÔ´ÊÇËùÓÐÒ³Ãæ¶¼ÐèÒªµÄ£¬°ÑËüÃÇÅäÖóÉËùÓÐÒ³Ãæ¶¼ÍÆËÍ¡±¡£
ÕâºÜÔã¸â£¬ÔÒòÊÇ»º´æ¡£ÔÚ·ÃÎʵÚÒ»¸öÒ³ÃæÖ®ºó£¬ÕâЩ×ÊÔ´ºÜ¿ÉÄܾÍÔÚÓû§µÄä¯ÀÀÆ÷»º´æÖУ¬È»¶øÄãÈ´ÔÚÃÆÍ·ÍÆËÍ¡£Äã¿ÉÄÜ»áÕù±ç˵£¬Õâ¿É±ÈÄÚÁªËùÓÐÕâЩ×ÊÔ´ºÃ¶àÁË¡£ÊÇÕâÑùµÄ£¬²»´í£¬µ«£¬ÎÒ±ØÐë·´¹ýÀ´¸æËßÄ㣬ÄÚÁª×ÊÔ´Ò²ÊÇÔã¸âµÄÖ÷Òâ¡£
ËùÒÔ£¬ÈôÄãÔÚÒÔÕâÖÖ·½Ê½Ã¤Ä¿ÍÆËÍ×ÊÔ´£¬ÇëÈ·±£ËüÊÇÄãÏëÒªÄÚÁªÔÚÒ³ÃæÖеÄΨһµÄ×ÊÔ´£¬Ò²¾ÍÊǹؼüµÄ CSS¡£·ñÔò£¬Äã¾ÍÊÇÔÚðÏÕÈÃÖØ¸´µÄÇëÇó±äÂý¡£
Äã¿ÉÄÜ»áÒÔΪ£¬Á÷ÖØÖÃ(stream resets)»á°ïÖúÍÆËÍÒÑ»º´æµÄ×ÊÔ´È¥±ÜÃâÀË·Ñ´ø¿íºÍʱ¼ä¡£Äã¿ÉÄÜ´íÁË¡£ºÜÏÔÈ»£¬²¢·ÇËùÓÐä¯ÀÀÆ÷»á¼ì²é»º´æ²¢ÖÕÖ¹ÒÑ»º´æ×ÊÔ´µÄÍÆËÍ¡£¾ÍËãËüÃÇ»áÕâÑù£¬ÔÚÁ÷ÖØÖÃÐźŵ½´ï·þÎñÆ÷֮ǰ£¬»¹ÊÇʹÓÃÁËÒ»Õû¸ö
RTT ʱ¼ä·¢ËÍÊý¾Ý¡£ÓÈÆäÊÇÓжà¸ö×ÊԴʱ£¬ÕâÑù×ö½«¿ÉÄÜ´øÀ´´óÁ¿Êý¾ÝÀË·Ñ¡£
½«ÄÚÈÝ·ÅÈëä¯ÀÀÆ÷»º´æ
Äã¿ÉÄÜÒÔΪ£¬ÍÆËͻὫ×ÊÔ´·ÅÈëä¯ÀÀÆ÷»º´æ£¬¿ÉÒÔÓÃÀ´×öһЩÏñʹµ±Ç°×ÊԴʧЧÕâÑùµÄ¹¤×÷¡£ÖÁÉÙĿǰ²»ÊÇÈç´Ë¡£ÑÐÌÖ»áÉϵÄÌÖÂ۵ϰÌâÖ®Ò»¾ÍÊÇÏÖʵÎÊÌ⣬¿ÉÄÜÎÒÃÇÐèÒª¸Ä±äµ±Ç°µÄÍÆËÍÐÐΪ£¬Ö§³ÖÓëä¯ÀÀÆ÷»º´æÖ±½Ó½»»¥¡£²»¹ýµ±Ç°£¬ÍÆËÍ»¹×ö²»µ½ÕâЩ¡£ÍÆËÍÏìÓ¦½øÈëÍÆËÍ»º´æ£¬Ö»ÓÐÕæÊµÇëÇóËüÃÇʱ²Å»á·Åµ½
HTTP »º´æÖС£
Òò´Ë£¬Èç¹ûÄãÔÚÍÆËÍ×ÊÔ´£¬Ï£ÍûËüÃÇÔÚδÀ´µÄij¸öÒ³ÃæÖÐʹÓã¬ÄÇôä¯ÀÀÆ÷ÓпÉÄÜÔÚÓõ½ËüÃÇ֮ǰÒѾ½«ËüÃÇÈÓ³öÍÆËÍ»º´æÖ®ÍâÁË¡£
ÖÁÉÙĿǰµÄʵÏÖÊÇÕâÑùµÄ¡£
Ìî²¹ HTML Ï·¢Ö®ºóµÄ¹ÜµÀ
ͨ³££¬ÔÚÒ³ÃæµÄÏÂÔØÑ»·ÖУ¬Ê¹ÓõĴø¿íÖ®¼ä»á´æÔÚ¼ä϶¡£ÕâÒâζ×ÅÎÒÃÇûÄܾ¡¿ìÏ·¢×ÊÔ´£¬Í¨³£ÕâÊÇÒòΪä¯ÀÀÆ÷·¢ÏÖ×ÊÔ´µÄÑÓ³Ù¡£
¾¡¹ÜÎÒÃÇÓ¦µ±¾¡Á¿Ï·¢Ò³ÃæËùÐè×ÊÔ´ÒÔÌîÂúÕâЩ¼ä϶£¬µ«Í¨³£Ê¹ÓÃÔ¤¼ÓÔØ±ÈÍÆË͸üºÃ¡£Ô¤¼ÓÔØ½«»º´æ¡¢cookieÒÔ¼°ÄÚÈÝÐÉÌÄÉÈ뿼ÂÇ£¬Ëü²»»áÏñÍÆËÍÄÇÑù´æÔÚ׏ý¶È·¢ËÍ»ò´íÎó·¢Ë͵ķçÏÕ¡£¾ÍÌî²¹ÕâЩ¼ä϶¶øÑÔ£¬ÍÆËͲ¢ÎÞÈκÎÓÅÊÆ£¬ËùÓеÄÖ»ÊÇÁÓÊÆ¡£¹Ê×îºÃ²»ÒªÊ¹ÓÃÍÆËÍ´ï³É´ËÄ¿µÄ£¬Ê¹ÓÃÔ¤¼ÓÔØ°É¡£
»º´æÕªÒª(Cache Digests)
´ÓÉÏÃæÎÒÃÇ¿ÉÒÔ¿´µ½£¬HTTP ÍÆË͵ÄÒ»´óȱµã¾ÍÊÇ£¬·þÎñÆ÷²¢²»±ØÈ»Çå³þä¯ÀÀÆ÷µÄ»º´æ×´Ì¬£¬Òò´ËÔÚÍÆËÍʱÎÒÃÇ¿ÉÄܻὫÒÑÔÚ»º´æÖдæÔÚµÄ×ÊÔ´ÍÆËͳöÈ¥¡£
ÓÐÒ»¸ö±ê×¼À©Õ¹µÄÌá°¸£¬½Ð×ö Cache Digests¡£Æä»ù±¾Ë¼ÏëÊÇä¯ÀÀÆ÷ÔÚ HTTP/2 Á¬½Ó³õʼ»¯Ö®ºó£¬Ïò·þÎñÆ÷·¢ËÍÕªÒª£¬·þÎñÆ÷ÔÚÏ·¢×ÊԴ֮ǰÄܹ»¾«È·ÅжÏ×ÊÔ´ÊÇ·ñÒÑÔÚä¯ÀÀÆ÷»º´æÖдæÔÚ¡£
¸ÃÌá°¸Éд¦ÓÚÔçÆÚ£¬¿ÉÄÜÐèÒª¼ò»¯£¬ÕâÑùʵÏÖÆðÀ´»¨·Ñ¸üÉÙ£¬²»¹ýÎÒ¸Ò˵£¬À뿪Õâ¸öÌØÐÔ£¬HTTP ÍÆËÍÖ»ÄÜËã°ë³ÉÆ·¡£
×ܽá
HTTP ÍÆËÍ¿ÉÒÔÓÃÀ´ÏÔÖøÌáÉý¼ÓÔØÐÔÄÜ¡£ÕýȷʹÓÃʱÄÜΪÊ׸ö¹Ø¼ü·¾¶¼ÓÔØÌáËÙ£¬´øÀ´ÐÔÄÜÖ¸±êµÄ¸ÄÉÆ¡£
ÍÆËÍÒÀÈ»ÊǷdz£Ðµļ¼Êõ£¬ÏñÆäËûËùÓÐй¤¾ßÒ»Ñù£¬ÔÚÕÒµ½Ê¹ÓõÄ×îÓÅ·½Ê½Ö®Ç°£¬»¹Óкܳ¤µÄ·Ҫ×ß¡£Õâһ·¶àÉÙ»áÓеãÍ´¿à¡£
ÊǹÊÔçÆÚʵÑéµÄ³õʼ½á¹û£¬¿ÉÄܲ¢·ÇÈ«ÈçÎÒÃÇËùÏ£ÍûµÄÄÇÑù¡£ÈÃÎÒÃǰÑÄÇЩ½á¹û×÷Ϊ±êÖ¾£¬Ö¸Ê¾ÎÒÃǹØÓÚÍÆË͵ÄʹÓÃÐèÒª¸ü¶à´ÏÃ÷²ÅÖǰɣ¬±ðÍýϽáÂÛ˵ËüÊÇÎÞÓõÄÌØÐÔ¡£ |