×÷Ϊһ¸ö¾³£ºÍweb´ò½»µÀµÄ³ÌÐòÔ±£¬Á˽âÕâЩÐÒéÊDZØÐëµÄ£¬±¾ÎľÍÏò´ó¼Ò½éÉÜÒ»ÏÂÕâЩÐÒéµÄÇø±ðºÍ»ù±¾¸ÅÄÎÄÖпÉÄܲ»¾ÖÏÞÓÚǰ¶Ë֪ʶ£¬»¹°üÀ¨Ò»Ð©ÔËά£¬ÐÒé·½ÃæµÄ֪ʶ£¬Ï£ÍûÄܸø¶ÁÕß´øÀ´Ò»Ð©ÊÕ»ñ£¬ÈçÓв»¶ÔÖ®´¦»¹ÇëÖ¸³ö¡£
1¡¢webÊ¼×æHTTP
È«³Æ£º³¬Îı¾´«ÊäÐÒé(HyperText Transfer Protocol) °éËæ×żÆËã»úÍøÂçºÍä¯ÀÀÆ÷µÄµ®Éú£¬HTTP1.0Ò²ËæÖ®¶øÀ´£¬´¦ÓÚ¼ÆËã»úÍøÂçÖеÄÓ¦Óò㣬HTTPÊǽ¨Á¢ÔÚTCPÐÒéÖ®ÉÏ£¬ËùÒÔHTTPÐÒéµÄÆ¿¾±¼°ÆäÓÅ»¯¼¼Çɶ¼ÊÇ»ùÓÚTCPÐÒé±¾ÉíµÄÌØÐÔ£¬ÀýÈçtcp½¨Á¢Á¬½ÓµÄ3´ÎÎÕÊֺͶϿªÁ¬½ÓµÄ4´Î»ÓÊÖÒÔ¼°Ã¿´Î½¨Á¢Á¬½Ó´øÀ´µÄRTTÑÓ³Ùʱ¼ä¡£
2¡¢HTTPÓëÏÖ´ú»¯ä¯ÀÀÆ÷
ÔçÔÚHTTP½¨Á¢Ö®³õ£¬Ö÷Òª¾ÍÊÇΪÁ˽«³¬Îı¾±ê¼ÇÓïÑÔ(HTML)Îĵµ´ÓWeb·þÎñÆ÷´«Ë͵½¿Í»§¶ËµÄä¯ÀÀÆ÷¡£Ò²ÊÇ˵¶ÔÓÚǰ¶ËÀ´Ëµ£¬ÎÒÃÇËùдµÄHTMLÒ³Ãæ½«Òª·ÅÔÚÎÒÃǵÄweb·þÎñÆ÷ÉÏ£¬Óû§¶Ëͨ¹ýä¯ÀÀÆ÷·ÃÎÊurlµØÖ·À´»ñÈ¡ÍøÒ³µÄÏÔʾÄÚÈÝ£¬µ«Êǵ½ÁËWEB2.0ÒÔÀ´£¬ÎÒÃǵÄÒ³Ãæ±äµÃ¸´ÔÓ£¬²»½ö½öµ¥´¿µÄÊÇһЩ¼òµ¥µÄÎÄ×ÖºÍͼƬ£¬Í¬Ê±ÎÒÃǵÄHTMLÒ³ÃæÓÐÁËCSS£¬Javascript£¬À´·á¸»ÎÒÃǵÄÒ³ÃæÕ¹Ê¾£¬µ±ajaxµÄ³öÏÖ£¬ÎÒÃÇÓÖ¶àÁËÒ»ÖÖÏò·þÎñÆ÷¶Ë»ñÈ¡Êý¾ÝµÄ·½·¨£¬ÕâЩÆäʵ¶¼ÊÇ»ùÓÚHTTPÐÒéµÄ£¬Í¬Ñùµ½ÁËÒÆ¶¯»¥ÁªÍøÊ±´ú£¬ÎÒÃÇÒ³Ãæ¿ÉÒÔÅÜÔÚÊÖ»ú¶Ëä¯ÀÀÆ÷ÀïÃæ£¬µ«ÊǺÍPCÏà±È£¬ÊÖ»ú¶ËµÄÍøÂçÇé¿ö¸ü¼Ó¸´ÔÓ£¬ÕâʹµÃÎÒÃÇ¿ªÊ¼Á˲»µÃ²»¶ÔHTTP½øÐÐÉîÈëÀí½â²¢²»¶ÏÓÅ»¯¹ý³ÌÖС£
3. HTTPµÄ»ù±¾ÓÅ»¯
Ó°ÏìÒ»¸öHTTPÍøÂçÇëÇóµÄÒòËØÖ÷ÒªÓÐÁ½¸ö£º´ø¿íºÍÑÓ³Ù¡£
´ø¿í£ºÈç¹û˵ÎÒÃÇ»¹Í£ÁôÔÚ²¦ºÅÉÏÍøµÄ½×¶Î£¬´ø¿í¿ÉÄÜ»á³ÉΪһ¸ö±È½ÏÑÏÖØÓ°ÏìÇëÇóµÄÎÊÌ⣬µ«ÊÇÏÖÔÚÍøÂç»ù´¡½¨ÉèÒѾʹµÃ´ø¿íµÃµ½¼«´óµÄÌáÉý£¬ÎÒÃDz»ÔٻᵣÐÄÓÉ´ø¿í¶øÓ°ÏìÍøËÙ£¬ÄÇô¾ÍֻʣÏÂÑÓ³ÙÁË¡£
ÑÓ³Ù£º
1¡¢ä¯ÀÀÆ÷×èÈû£¨HOL blocking£©£ºä¯ÀÀÆ÷»áÒòΪһЩÔÒò×èÈûÇëÇó¡£ä¯ÀÀÆ÷¶ÔÓÚͬһ¸öÓòÃû£¬Í¬Ê±Ö»ÄÜÓÐ
4 ¸öÁ¬½Ó£¨Õâ¸ö¸ù¾Ýä¯ÀÀÆ÷Äں˲»Í¬¿ÉÄÜ»áÓÐËù²îÒ죩£¬³¬¹ýä¯ÀÀÆ÷×î´óÁ¬½ÓÊýÏÞÖÆ£¬ºóÐøÇëÇó¾Í»á±»×èÈû¡£
2¡¢DNS ²éѯ£¨DNS Lookup£©£ºä¯ÀÀÆ÷ÐèÒªÖªµÀÄ¿±ê·þÎñÆ÷µÄ IP ²ÅÄܽ¨Á¢Á¬½Ó¡£½«ÓòÃû½âÎöΪ
IP µÄÕâ¸öϵͳ¾ÍÊÇ DNS¡£Õâ¸öͨ³£¿ÉÒÔÀûÓÃDNS»º´æ½á¹ûÀ´´ïµ½¼õÉÙÕâ¸öʱ¼äµÄÄ¿µÄ¡£
3¡¢½¨Á¢Á¬½Ó£¨Initial connection£©£ºHTTP ÊÇ»ùÓÚ TCP ÐÒéµÄ£¬ä¯ÀÀÆ÷×î¿ìÒ²ÒªÔÚµÚÈý´ÎÎÕÊÖʱ²ÅÄÜÉÓ´ø
HTTP ÇëÇó±¨ÎÄ£¬´ïµ½ÕæÕýµÄ½¨Á¢Á¬½Ó£¬µ«ÊÇÕâЩÁ¬½ÓÎÞ·¨¸´ÓûᵼÖÂÿ´ÎÇëÇó¶¼¾ÀúÈý´ÎÎÕÊÖºÍÂýÆô¶¯¡£Èý´ÎÎÕÊÖÔÚ¸ßÑӳٵij¡¾°ÏÂÓ°Ïì½ÏÃ÷ÏÔ£¬ÂýÆô¶¯Ôò¶ÔÎļþÀà´óÇëÇóÓ°Ïì½Ï´ó¡£
4¡¢HTTP1.0ºÍHTTP1.1µÄÒ»Ð©Çø±ð
HTTP1.0×îÔçÔÚÍøÒ³ÖÐʹÓÃÊÇÔÚ1996Ä꣬ÄǸöʱºòÖ»ÊÇʹÓÃһЩ½ÏΪ¼òµ¥µÄÍøÒ³ÉϺÍÍøÂçÇëÇóÉÏ£¬¶øHTTP1.1ÔòÔÚ1999Äê²Å¿ªÊ¼¹ã·ºÓ¦ÓÃÓÚÏÖÔڵĸ÷´óä¯ÀÀÆ÷ÍøÂçÇëÇóÖУ¬Í¬Ê±HTTP1.1Ò²Êǵ±Ç°Ê¹ÓÃ×îΪ¹ã·ºµÄHTTPÐÒé¡£
Ö÷񻂿±ðÖ÷ÒªÌåÏÖÔÚ£º
1¡¢»º´æ´¦Àí£¬ÔÚHTTP1.0ÖÐÖ÷ҪʹÓÃheaderÀïµÄIf-Modified-Since,ExpiresÀ´×öΪ»º´æÅжϵıê×¼£¬HTTP1.1ÔòÒýÈëÁ˸ü¶àµÄ»º´æ¿ØÖƲßÂÔÀýÈçEntity
tag£¬If-Unmodified-Since, If-Match, If-None-MatchµÈ¸ü¶à¿É¹©Ñ¡ÔñµÄ»º´æÍ·À´¿ØÖÆ»º´æ²ßÂÔ¡£
2¡¢´ø¿íÓÅ»¯¼°ÍøÂçÁ¬½ÓµÄʹÓã¬HTTP1.0ÖУ¬´æÔÚһЩÀË·Ñ´ø¿íµÄÏÖÏó£¬ÀýÈç¿Í»§¶ËÖ»ÊÇÐèҪij¸ö¶ÔÏóµÄÒ»²¿·Ö£¬¶ø·þÎñÆ÷È´½«Õû¸ö¶ÔÏóË͹ýÀ´ÁË£¬²¢ÇÒ²»Ö§³Ö¶ÏµãÐø´«¹¦ÄÜ£¬HTTP1.1ÔòÔÚÇëÇóÍ·ÒýÈëÁËrangeÍ·Óò£¬ËüÔÊÐíÖ»ÇëÇó×ÊÔ´µÄij¸ö²¿·Ö£¬¼´·µ»ØÂëÊÇ206£¨Partial
Content£©£¬ÕâÑù¾Í·½±ãÁË¿ª·¢Õß×ÔÓɵÄÑ¡ÔñÒÔ±ãÓÚ³ä·ÖÀûÓôø¿íºÍÁ¬½Ó¡£
3¡¢´íÎó֪ͨµÄ¹ÜÀí£¬ÔÚHTTP1.1ÖÐÐÂÔöÁË24¸ö´íÎó״̬ÏìÓ¦Â룬Èç409£¨Conflict£©±íʾÇëÇóµÄ×ÊÔ´Óë×ÊÔ´µÄµ±Ç°×´Ì¬·¢Éú³åÍ»£»410£¨Gone£©±íʾ·þÎñÆ÷ÉϵÄij¸ö×ÊÔ´±»ÓÀ¾ÃÐÔµÄɾ³ý¡£
4¡¢HostÍ·´¦Àí£¬ÔÚHTTP1.0ÖÐÈÏΪÿ̨·þÎñÆ÷¶¼°ó¶¨Ò»¸öΨһµÄIPµØÖ·£¬Òò´Ë£¬ÇëÇóÏûÏ¢ÖеÄURL²¢Ã»Óд«µÝÖ÷»úÃû£¨hostname£©¡£µ«Ëæ×ÅÐéÄâÖ÷»ú¼¼ÊõµÄ·¢Õ¹£¬ÔÚһ̨ÎïÀí·þÎñÆ÷ÉÏ¿ÉÒÔ´æÔÚ¶à¸öÐéÄâÖ÷»ú£¨Multi-homed
Web Servers£©£¬²¢ÇÒËüÃǹ²ÏíÒ»¸öIPµØÖ·¡£HTTP1.1µÄÇëÇóÏûÏ¢ºÍÏìÓ¦ÏûÏ¢¶¼Ó¦Ö§³ÖHostÍ·Óò£¬ÇÒÇëÇóÏûÏ¢ÖÐÈç¹ûûÓÐHostÍ·Óò»á±¨¸æÒ»¸ö´íÎó£¨400
Bad Request£©¡£
5¡¢³¤Á¬½Ó£¬HTTP 1.1Ö§³Ö³¤Á¬½Ó£¨PersistentConnection£©ºÍÇëÇóµÄÁ÷Ë®Ïߣ¨Pipelining£©´¦Àí£¬ÔÚÒ»¸öTCPÁ¬½ÓÉÏ¿ÉÒÔ´«ËͶà¸öHTTPÇëÇóºÍÏìÓ¦£¬¼õÉÙÁ˽¨Á¢ºÍ¹Ø±ÕÁ¬½ÓµÄÏûºÄºÍÑÓ³Ù£¬ÔÚHTTP1.1ÖÐĬÈÏ¿ªÆôConnection£º
keep-alive£¬Ò»¶¨³Ì¶ÈÉÏÃÖ²¹ÁËHTTP1.0ÿ´ÎÇëÇó¶¼Òª´´½¨Á¬½ÓµÄȱµã¡£ÒÔÏÂÊdz£¼ûµÄHTTP1.0£º

Çø±ðÓÃÒ»ÕÅͼÀ´ÌåÏÖ£º
>
5¡¢HTTP1.0ºÍ1.1ÏÖ´æµÄһЩÎÊÌâ
1¡¢ÉÏÃæÌáµ½¹ýµÄ£¬HTTP1.xÔÚ´«ÊäÊý¾Ýʱ£¬Ã¿´Î¶¼ÐèÒªÖØÐ½¨Á¢Á¬½Ó£¬ÎÞÒÉÔö¼ÓÁË´óÁ¿µÄÑÓ³Ùʱ¼ä£¬ÌرðÊÇÔÚÒÆ¶¯¶Ë¸üΪͻ³ö¡£
2¡¢HTTP1.xÔÚ´«ÊäÊý¾Ýʱ£¬ËùÓд«ÊäµÄÄÚÈݶ¼ÊÇÃ÷ÎÄ£¬¿Í»§¶ËºÍ·þÎñÆ÷¶Ë¶¼ÎÞ·¨ÑéÖ¤¶Ô·½µÄÉí·Ý£¬ÕâÔÚÒ»¶¨³Ì¶ÈÉÏÎÞ·¨±£Ö¤Êý¾ÝµÄ°²È«ÐÔ¡£
3¡¢HTTP1.xÔÚʹÓÃʱ£¬headerÀïЯ´øµÄÄÚÈݹý´ó£¬ÔÚÒ»¶¨³Ì¶ÈÉÏÔö¼ÓÁË´«ÊäµÄ³É±¾£¬²¢ÇÒÿ´ÎÇëÇóheader»ù±¾²»Ôõô±ä»¯£¬ÓÈÆäÔÚÒÆ¶¯¶ËÔö¼ÓÓû§Á÷Á¿¡£
4¡¢ËäÈ»HTTP1.xÖ§³ÖÁËkeep-alive£¬À´ÃÖ²¹¶à´Î´´½¨Á¬½Ó²úÉúµÄÑÓ³Ù£¬µ«ÊÇkeep-aliveʹÓöàÁËͬÑù»á¸ø·þÎñ¶Ë´øÀ´´óÁ¿µÄÐÔÄÜѹÁ¦£¬²¢ÇÒ¶ÔÓÚµ¥¸öÎļþ±»²»¶ÏÇëÇóµÄ·þÎñ(ÀýÈçͼƬ´æ·ÅÍøÕ¾)£¬keep-alive¿ÉÄܻἫ´óµÄÓ°ÏìÐÔÄÜ£¬ÒòΪËüÔÚÎļþ±»ÇëÇóÖ®ºó»¹±£³ÖÁ˲»±ØÒªµÄÁ¬½ÓºÜ³¤Ê±¼ä¡£
6. HTTPSÓ¦Éù¶ø³ö
ΪÁ˽â¾öÒÔÉÏÎÊÌâ£¬Íø¾°ÔÚ1994Äê´´½¨ÁËHTTPS£¬²¢Ó¦ÓÃÔÚÍø¾°µ¼º½Õßä¯ÀÀÆ÷ÖС£ ×î³õ£¬HTTPSÊÇÓëSSLÒ»ÆðʹÓõģ»ÔÚSSLÖð½¥Ñݱ䵽TLSʱ£¨ÆäʵÁ½¸öÊÇÒ»¸ö¶«Î÷£¬Ö»ÊÇÃû×Ö²»Í¬¶øÒÑ£©£¬×îеÄHTTPSÒ²ÓÉÔÚ2000ÄêÎåÔ¹«²¼µÄRFC
2818Õýʽȷ¶¨ÏÂÀ´¡£¼òµ¥À´Ëµ£¬HTTPS¾ÍÊǰ²È«°æµÄHTTP£¬²¢ÇÒÓÉÓÚµ±½ñʱ´ú¶Ô°²È«ÐÔÒªÇó¸ü¸ß£¬chromeºÍfirefox¶¼´óÁ¦Ö§³ÖÍøÕ¾Ê¹ÓÃHTTPS£¬Æ»¹ûÒ²ÔÚios
10ϵͳÖÐÇ¿ÖÆappʹÓÃHTTPSÀ´´«ÊäÊý¾Ý£¬Óɴ˿ɼûHTTPSÊÆÔÚ±ØÐС£
7¡¢HTTPSÓëHTTPµÄÒ»Ð©Çø±ð
1¡¢HTTPSÐÒéÐèÒªµ½CAÉêÇëÖ¤Ê飬һ°ãÃâ·ÑÖ¤ÊéºÜÉÙ£¬ÐèÒª½»·Ñ¡£
2¡¢HTTPÐÒéÔËÐÐÔÚTCPÖ®ÉÏ£¬ËùÓд«ÊäµÄÄÚÈݶ¼ÊÇÃ÷ÎÄ£¬HTTPSÔËÐÐÔÚSSL/TLSÖ®ÉÏ£¬SSL/TLSÔËÐÐÔÚTCPÖ®ÉÏ£¬ËùÓд«ÊäµÄÄÚÈݶ¼¾¹ý¼ÓÃܵġ£
3¡¢HTTPºÍHTTPSʹÓõÄÊÇÍêÈ«²»Í¬µÄÁ¬½Ó·½Ê½£¬ÓõĶ˿ÚÒ²²»Ò»Ñù£¬Ç°ÕßÊÇ80£¬ºóÕßÊÇ443¡£
4¡¢HTTPS¿ÉÒÔÓÐЧµÄ·ÀÖ¹ÔËÓªÉ̽ٳ֣¬½â¾öÁË·À½Ù³ÖµÄÒ»¸ö´óÎÊÌâ¡£
8¡¢HTTPS¸ÄÔì
Èç¹ûÒ»¸öÍøÕ¾ÒªÈ«Õ¾ÓÉHTTPÌæ»»³ÉHTTPS£¬¿ÉÄÜÐèÒª¹Ø×¢ÒÔϼ¸µã£º
1¡¢°²×°CAÖ¤Ê飬һ°ãµÄÖ¤Êé¶¼ÊÇÐèÒªÊշѵģ¬Õâ±ßÍÆ¼öÒ»¸ö±È½ÏºÃµÄ¹ºÂòÖ¤ÊéÍøÕ¾£º1£©Let's Encrypt£¬Ãâ·Ñ£¬¿ì½Ý£¬Ö§³Ö¶àÓòÃû£¨²»ÊÇͨÅä·û£©£¬ÈýÌõÃüÁʱǩÊð+µ¼³öÖ¤Ê顣ȱµãÊÇÔÝʱֻÓÐÈý¸öÔÂÓÐЧÆÚ£¬µ½ÆÚÐèÐøÇ©¡£2Comodo
PositiveSSL£¬ÊÕ·Ñ£¬µ«ÊDZȽÏÎȶ¨¡£
2¡¢ÔÚ¹ºÂòÖ¤ÊéÖ®ºó£¬ÔÚÖ¤ÊéÌṩµÄÍøÕ¾ÉÏÅäÖÃ×Ô¼ºµÄÓòÃû£¬½«Ö¤ÊéÏÂÔØÏÂÀ´Ö®ºó£¬ÅäÖÃ×Ô¼ºµÄweb·þÎñÆ÷£¬Í¬Ê±½øÐдúÂë¸ÄÔì¡£
3¡¢HTTPS ½µµÍÓû§·ÃÎÊËÙ¶È¡£SSLÎÕÊÖ£¬HTTPS ¶ÔËÙ¶È»áÓÐÒ»¶¨³Ì¶ÈµÄ½µµÍ£¬µ«ÊÇÖ»Òª¾¹ýºÏÀíÓÅ»¯ºÍ²¿Êð£¬HTTPS
¶ÔËٶȵÄÓ°ÏìÍêÈ«¿ÉÒÔ½ÓÊÜ¡£Ôںܶೡ¾°Ï£¬HTTPS ËÙ¶ÈÍêÈ«²»Ñ·ÓÚ HTTP£¬Èç¹ûʹÓà SPDY£¬HTTPS
µÄËÙ¶ÈÉõÖÁ»¹Òª±È HTTP ¿ì¡£
4¡¢Ïà¶ÔÓÚHTTPS½µµÍ·ÃÎÊËÙ¶È£¬Æäʵ¸üÐèÒª¹ØÐĵÄÊÇ·þÎñÆ÷¶ËµÄCPUѹÁ¦£¬HTTPSÖдóÁ¿µÄÃÜÔ¿Ëã·¨¼ÆË㣬»áÏûºÄ´óÁ¿µÄCPU×ÊÔ´£¬Ö»ÓÐ×ã¹»µÄÓÅ»¯£¬HTTPS
µÄ»úÆ÷³É±¾²Å²»»áÃ÷ÏÔÔö¼Ó¡£
ÍÆ¼öÒ»ÔòÌÔ±¦Íø¸ÄÔìHTTPS£¨http://velocity.oreilly.com.cn/2015/ppts/lizhenyu.pdf£©µÄÎÄÕ¡£
9¡¢Ê¹ÓÃSPDY¼Ó¿ìÄãµÄÍøÕ¾ËÙ¶È
2012ÄêgoogleÈçÒ»Éù¾ªÀ×Ìá³öÁËSPDYµÄ·½°¸£¬´ó¼Ò²Å¿ªÊ¼´ÓÕýÃæ¿´´ýºÍ½â¾öÀϰ汾HTTPÐÒé±¾ÉíµÄÎÊÌ⣬SPDY¿ÉÒÔ˵ÊÇ×ÛºÏÁËHTTPSºÍHTTPÁ½ÕßÓеãÓÚÒ»ÌåµÄ´«ÊäÐÒ飬Ö÷Òª½â¾ö£º
1¡¢½µµÍÑÓ³Ù£¬Õë¶ÔHTTP¸ßÑÓ³ÙµÄÎÊÌ⣬SPDYÓÅÑŵIJÉÈ¡Á˶à·¸´Óã¨multiplexing£©¡£¶à·¸´ÓÃͨ¹ý¶à¸öÇëÇóstream¹²ÏíÒ»¸ötcpÁ¬½ÓµÄ·½Ê½£¬½â¾öÁËHOL
blockingµÄÎÊÌ⣬½µµÍÁËÑÓ³ÙͬʱÌá¸ßÁË´ø¿íµÄÀûÓÃÂÊ¡£
2¡¢ÇëÇóÓÅÏȼ¶£¨request prioritization£©¡£¶à·¸´ÓôøÀ´Ò»¸öеÄÎÊÌâÊÇ£¬ÔÚÁ¬½Ó¹²ÏíµÄ»ù´¡Ö®ÉÏÓпÉÄܻᵼÖ¹ؼüÇëÇó±»×èÈû¡£SPDYÔÊÐí¸øÃ¿¸örequestÉèÖÃÓÅÏȼ¶£¬ÕâÑùÖØÒªµÄÇëÇó¾Í»áÓÅÏȵõ½ÏìÓ¦¡£±ÈÈçä¯ÀÀÆ÷¼ÓÔØÊ×Ò³£¬Ê×Ò³µÄhtmlÄÚÈÝÓ¦¸ÃÓÅÏÈչʾ£¬Ö®ºó²ÅÊǸ÷ÖÖ¾²Ì¬×ÊÔ´Îļþ£¬½Å±¾ÎļþµÈ¼ÓÔØ£¬ÕâÑù¿ÉÒÔ±£Ö¤Óû§ÄܵÚһʱ¼ä¿´µ½ÍøÒ³ÄÚÈÝ¡£
3¡¢headerѹËõ¡£Ç°ÃæÌáµ½HTTP1.xµÄheaderºÜ¶àʱºò¶¼ÊÇÖØ¸´¶àÓàµÄ¡£Ñ¡ÔñºÏÊʵÄѹËõËã·¨¿ÉÒÔ¼õС°üµÄ´óСºÍÊýÁ¿¡£
4¡¢»ùÓÚHTTPSµÄ¼ÓÃÜÐÒé´«Ê䣬´ó´óÌá¸ßÁË´«ÊäÊý¾ÝµÄ¿É¿¿ÐÔ¡£
5¡¢·þÎñ¶ËÍÆËÍ£¨server push£©£¬²ÉÓÃÁËSPDYµÄÍøÒ³£¬ÀýÈçÎÒµÄÍøÒ³ÓÐÒ»¸ösytle.cssµÄÇëÇó£¬ÔÚ¿Í»§¶ËÊÕµ½sytle.cssÊý¾ÝµÄͬʱ£¬·þÎñ¶Ë»á½«sytle.jsµÄÎļþÍÆË͸ø¿Í»§¶Ë£¬µ±¿Í»§¶ËÔٴγ¢ÊÔ»ñÈ¡sytle.jsʱ¾Í¿ÉÒÔÖ±½Ó´Ó»º´æÖлñÈ¡µ½£¬²»ÓÃÔÙ·¢ÇëÇóÁË¡£SPDY¹¹³Éͼ£º

SPDYλÓÚHTTP֮ϣ¬TCPºÍSSLÖ®ÉÏ£¬ÕâÑù¿ÉÒÔÇáËɼæÈÝÀϰ汾µÄHTTPÐÒé(½«HTTP1.xµÄÄÚÈÝ·â×°³ÉÒ»ÖÖеÄframe¸ñʽ)£¬Í¬Ê±¿ÉÒÔʹÓÃÒÑÓеÄSSL¹¦ÄÜ¡£
¼æÈÝÐÔ£º
10¡¢HTTP2.0µÄǰÊÀ½ñÉú
¹ËÃû˼ÒåÓÐÁËHTTP1.x£¬ÄÇôHTTP2.0Ò²¾Í˳Àí³ÉÕµijöÏÖÁË¡£
HTTP2.0¿ÉÒÔ˵ÊÇSPDYµÄÉý¼¶°æ£¨ÆäʵԱ¾Ò²ÊÇ»ùÓÚSPDYÉè¼ÆµÄ£©£¬µ«ÊÇ£¬HTTP2.0 ¸ú SPDY
ÈÔÓв»Í¬µÄµØ·½£¬Ö÷ÒªÊÇÒÔÏÂÁ½µã£º
HTTP2.0 Ö§³ÖÃ÷ÎÄ HTTP ´«Ê䣬¶ø SPDY Ç¿ÖÆÊ¹Óà HTTPS
HTTP2.0 ÏûϢͷµÄѹËõËã·¨²ÉÓà HPACK£¬¶ø·Ç SPDY ²ÉÓÃµÄ DEFLATE
11. HTTP2.0µÄÐÂÌØÐÔ
еĶþ½øÖƸñʽ£¨Binary Format£©£¬HTTP1.xµÄ½âÎöÊÇ»ùÓÚÎı¾¡£»ùÓÚÎı¾ÐÒéµÄ¸ñʽ½âÎö´æÔÚÌìȻȱÏÝ£¬Îı¾µÄ±íÏÖÐÎʽÓжàÑùÐÔ£¬Òª×öµ½½¡×³ÐÔ¿¼Âǵij¡¾°±ØÈ»ºÜ¶à£¬¶þ½øÖÆÔò²»Í¬£¬Ö»ÈÏ0ºÍ1µÄ×éºÏ¡£»ùÓÚÕâÖÖ¿¼ÂÇHTTP2.0µÄÐÒé½âÎö¾ö¶¨²ÉÓöþ½øÖƸñʽ£¬ÊµÏÖ·½±ãÇÒ½¡×³¡£
¶à·¸´Óã¨MultiPlexing£©£¬¼´Á¬½Ó¹²Ïí£¬¼´Ã¿Ò»¸örequest¶¼ÊÇÊÇÓÃ×÷Á¬½Ó¹²Ïí»úÖÆµÄ¡£Ò»¸örequest¶ÔÓ¦Ò»¸öid£¬ÕâÑùÒ»¸öÁ¬½ÓÉÏ¿ÉÒÔÓжà¸örequest£¬Ã¿¸öÁ¬½ÓµÄrequest¿ÉÒÔËæ»úµÄ»ìÔÓÔÚÒ»Æð£¬½ÓÊÕ·½¿ÉÒÔ¸ù¾ÝrequestµÄ
id½«requestÔÙ¹éÊôµ½¸÷×Ô²»Í¬µÄ·þÎñ¶ËÇëÇóÀïÃæ¡£¶à·¸´ÓÃÔÀíͼ£º
headerѹËõ£¬ÈçÉÏÎÄÖÐËùÑÔ£¬¶ÔÇ°ÃæÌáµ½¹ýHTTP1.xµÄheader´øÓдóÁ¿ÐÅÏ¢£¬¶øÇÒÿ´Î¶¼ÒªÖظ´·¢ËÍ£¬HTTP2.0ʹÓÃencoderÀ´¼õÉÙÐèÒª´«ÊäµÄheader´óС£¬Í¨Ñ¶Ë«·½¸÷×ÔcacheÒ»·Ýheader
fields±í£¬¼È±ÜÃâÁËÖØ¸´headerµÄ´«Ê䣬ÓÖ¼õСÁËÐèÒª´«ÊäµÄ´óС¡£
·þÎñ¶ËÍÆËÍ£¨server push£©£¬Í¬SPDYÒ»Ñù£¬HTTP2.0Ò²¾ßÓÐserver push¹¦ÄÜ¡£Ä¿Ç°£¬Óдó¶àÊýÍøÕ¾ÒѾÆôÓÃHTTP2.0£¬ÀýÈçYouTuBe£¬ÌÔ±¦ÍøµÈÍøÕ¾£¬ÀûÓÃchrome¿ØÖÆÌ¨¿ÉÒԲ鿴ÊÇ·ñÆôÓÃH2£º
¸ü¶à¹ØÓÚHTTP2µÄÎÊÌâ¿ÉÒԲο¼£ºHTTP2ÆæÃîÈÕ³££¨http://www.alloyteam.com/2015/03/http2-0-di-qi-miao-ri-chang/£©£¬ÒÔ¼°HTTP2.0µÄ¹Ù·½ÍøÕ¾¡£
¹ØÓÚHTTP2ºÍHTTP1.xµÄÇø±ð´óÖ¿ÉÒÔ¿´ÏÂͼ£º

12¡¢HTTP2.0µÄÉý¼¶¸ÄÔì
¶Ô±ÈHTTPSµÄÉý¼¶¸ÄÔ죬HTTP2.0»òÐí»áÉÔ΢¼òµ¥Ò»Ð©£¬Äã¿ÉÄÜÐèÒª¹Ø×¢ÒÔÏÂÎÊÌ⣺
1¡¢Ç°ÎÄ˵ÁËHTTP2.0Æäʵ¿ÉÒÔÖ§³Ö·ÇHTTPSµÄ£¬µ«ÊÇÏÖÔÚÖ÷Á÷µÄä¯ÀÀÆ÷Ïñchrome£¬firefox±íʾ»¹ÊÇÖ»Ö§³Ö»ùÓÚ
TLS ²¿ÊðµÄHTTP2.0ÐÒ飬ËùÒÔÒªÏëÉý¼¶³ÉHTTP2.0»¹ÊÇÏÈÉý¼¶HTTPSΪºÃ¡£
2¡¢µ±ÄãµÄÍøÕ¾ÒѾÉý¼¶HTTPSÖ®ºó£¬ÄÇôÉý¼¶HTTP2.0¾Í¼òµ¥ºÜ¶à£¬Èç¹ûÄãʹÓÃNGINX£¬Ö»ÒªÔÚÅäÖÃÎļþÖÐÆô¶¯ÏàÓ¦µÄÐÒé¾Í¿ÉÒÔÁË£¬¿ÉÒԲο¼NGINX°×ƤÊ飬NGINXÅäÖÃHTTP2.0¹Ù·½Ö¸ÄÏ¡£
3¡¢Ê¹ÓÃÁËHTTP2.0ÄÇô£¬Ô±¾µÄHTTP1.xÔõô°ì£¬Õâ¸öÎÊÌâÆäʵ²»Óõ£ÐÄ£¬HTTP2.0ÍêÈ«¼æÈÝHTTP1.xµÄÓïÒ壬¶ÔÓÚ²»Ö§³ÖHTTP2.0µÄä¯ÀÀÆ÷£¬NGINX»á×Ô¶¯ÏòϼæÈݵġ£ |