HTTP 2.0¼´³¬Îı¾´«ÊäÐÒé 2.0£¬ÊÇÏÂÒ»´úHTTPÐÒé¡£ÊÇÓÉ»¥ÁªÍø¹¤³ÌÈÎÎñ×飨IETF£©µÄHypertext Transfer Protocol Bis (httpbis)¹¤×÷С×é½øÐпª·¢¡£ÊÇ×Ô1999Äêhttp1.1·¢²¼ºóµÄÊ׸ö¸üУ¬HTTP/2 ÐÒéÊÇ´Ó SPDY Ñݱä¶øÀ´£¬SPDY ÒѾÍê³ÉÁËʹÃü²¢ºÜ¿ì¾Í»áÍ˳öÀúÊ·Îę̀£¨ÀýÈç Chrome ÔÚ¡¸2016 Äê³õ½áÊø¶Ô SPDY µÄÖ§³Ö¡¹£»NginxÔÚ°æ±¾1.9.5+£¬ApacheÔÚ°æ±¾2.4.16+¶¼ÒѾȫÃæÖ§³ÖHTTP/2¡£
ÉÏͼÊÇAkamaiµÄHTTP/2 DEMO£¬Í¨¹ý¼ÓÔØ300ÕÅͼƬ£¬¶Ô±ÈHTTP/1.1ºÍHTTP/2£¬Ê×ÏÈÖ±¹ÛµØ¸ÐÊÜÒ»ÏÂHTTP/2£¬ÏÂÀ´½âÊÍÒ»ÏÂÕâ¸ö¸ÐÊܵÄÔÒò£¬¼´HTTP/2ÐÂÌØÐÔ£º
¶þ½øÖÆ·ÖÖ¡²ã£¬ÊÇHTTP2.0ÐÔÄÜÔöÇ¿µÄºËÐÄ
HTTP 1.xÔÚÓ¦ÓòãÒÔ´¿Îı¾µÄÐÎʽ½øÐÐͨÐÅ£¬HTTP2.0ÔÚ²»¸Ä±äHTTP1.xµÄÓïÒå¡¢·½·¨¡¢×´Ì¬Âë¡¢URLÒÔ¼°Êײ¿×ֶεÄÇé¿öÏ£¬ÎªÁËÍ»ÆÆÔÓÐÐÔÄÜÏÞÖÆ£¬ÔÚÓ¦Óòã(HTTP)ºÍ´«Êä²ã(TCP)Ö®¼äÔö¼ÓÁËÒ»¸ö¶þ½øÖÆ·ÖÖ¡²ã¡£HTTP2.0½«ËùÓеĴ«ÊäÐÅÏ¢·Ö¸îΪ¸üСµÄÏûÏ¢ºÍÖ¡£¬²¢¶ÔËüÃDzÉÓöþ½øÖƸñʽ±àÂ룬ÈçÏÂͼËùʾ
ÕâÀïÒýÈëÒ»¸öеÄͨÐŵ¥Î»£ºÖ¡
Ö¡ÊÇHTTP 2.0ͨÐŵÄ×îСµ¥Î»£¬°üÀ¨Ö¡Êײ¿¡¢Á÷±êʶ·û¡¢ÓÅÏÈÖµºÍÖ¡¾»ºÉµÈ
ÆäÖУ¬Ö¡ÀàÐÍ¿ÉÒÔ·ÖΪ£º
±ê־룬ÓÃÓÚ²»Í¬µÄÖ¡ÀàÐͶ¨ÒåÌض¨µÄÏûÏ¢±êÖ¾¡£±ÈÈçDATAÖ¡¾Í¿ÉÒÔʹÓÃEnd Stream: true±íʾ¸ÃÌõÏûϢͨÐÅÍê±Ï£»Á÷±êʶλ±íʾ֡ËùÊôµÄÁ÷ID£»ÓÅÏÈÖµÓÃÓÚHEADERSÖ¡£¬±íʾÇëÇóÓÅÏȼ¶£»R±íʾ±£Áô¡£
ÏÂÃæÊÇ×¥°üµÄÒ»¸öHEADERSÖ¡£º
ÁíÍâÒ»¸öÁ½¸öҪ˵һϵĸÅÄÏûÏ¢ºÍÁ÷
ÏûÏ¢ÊÇÖ¸Âß¼ÉϵÄHTTPÏûÏ¢(ÇëÇó/ÏìÓ¦)£¬Ò»ÏµÁÐÊý¾ÝÖ¡×é³ÉÒ»¸öÍêÕûµÄÏûÏ¢£¬±ÈÈçһϵÁÐDATAÖ¡ºÍÒ»¸öHEADERSÖ¡×é³ÉÁËÇëÇóÏûÏ¢¡£
Á÷ÊÇÁ´½ÓÖеÄÒ»¸öÐéÄâÐŵÀ£¬¿ÉÒÔ³ÐÔØË«ÏòÏûÏ¢´«Ê䣬ÿ¸öÁ÷ÓÐΨһ֤Êé±êʶ·û£¬ÎªÁË·ÀÖ¹Á½¶ËÁ÷ID³åÍ»£¬¿Í»§¶Ë·¢ÆðµÄÁ÷¾ßÓÐÆæÊýID£¬·þÎñ¶Ë·¢ÆðµÄÁ÷¾ßÓÐżÊýID¡£
ËùÓÐHTTP 2.0ͨÐŶ¼ÔÚÒ»¸öTCPÁ´½ÓÉÏÍê³É£¬Õâ¸öÁ´½Ó¿ÉÒÔ³ÐÔØÈÎÒâÊýÁ¿µÄË«ÏòÊý¾ÝÁ÷Stream¡£ÏàÓ¦µØ£¬Ã¿¸öÊý¾ÝÁ÷ÒÔÏûÏ¢µÄÐÎʽ·¢ËÍ£¬¶øÏûÏ¢ÓÉÒ»¸ö»ò¶à¸öÖ¡×é³É£¬ÕâЩ֡¿ÉÒÔÂÒÐò·¢ËÍ£¬È»ºó¸ù¾Ýÿ¸öÖ¡Êײ¿µÄÁ÷±êʶ·ûÖØÐÂ×é×°¡£
¶þ½øÖÆ·ÖÖ¡Ö÷ÒªÊÇΪHTTP2.0ÆäËûÌØÐÔÌṩ»ù´¡¡£ËüÄÜ°ÑÒ»¸öÊý¾Ý»®·Ö·âװΪ¸üС¸ü±ã½ÝµÄÊý¾Ý¡£Ê×ÏÈÊÇÔÚµ¥Á´¶à×ÊÔ´·½Ê½ÖУ¬¼õÉÙ·þÎñ¶ËµÄÁ´½ÓѹÁ¦£¬ÄÚ´æÕ¼ÓøüÉÙ£¬Á´½ÓÍÌÍÂÁ¿¸ü´ó£»ÁíÒ»·½Ã棬ÓÉÓÚTCPÁ´½ÓµÄ¼õÉÙ¶øʹÍøÂçÓµÈû״̬µÃÒÔ¸ÄÉÆ£¬Í¬Ê±ÂýÆô¶¯Ê±¼ä¼õÉÙ£¬Ê¹ÓµÈûºÍ¶ª°ü»Ö¸´µÄËٶȸü¿ì¡£
HTTP1.xÿ´ÎͨÐÅ(ÇëÇó»òÏìÓ¦)¶¼»áЯ´øÊײ¿ÐÅÏ¢ÓÃÓÚÃèÊö×ÊÔ´ÊôÐÔ¡£¶øHTTP2.0ÔÚ¿Í»§¶ËºÍ·þÎñ¶ËÖ®¼äʹÓÃÊײ¿±íÀ´¸ú×ٺʹ洢֮ǰ·¢Ë͵ļüÖµ¶Ô£¬Êײ¿±íÔÚÁ¬½Ó¹ý³ÌÖÐʼÖÕ´æÔÚ£¬ÐÂÔöµÄ¼üÖµ¶Ô»á¸üе½±í⣬Òò´Ë²»ÐèҪÿ´ÎͨÐŶ¼Ð¯´øÊײ¿£¬ÇëÇóÓëÏìÓ¦Êײ¿µÄ¶¨ÒåÔÚHTTP2.0Öлù±¾Ã»Óб䡣
ÁíÍâHTTP2.0ʹÓÃÁËÊײ¿Ñ¹Ëõ¼¼Êõ£¬Ñ¹ËõËã·¨²ÉÓÃHPACK£¬Èñ¨Í·¸ü½ô´Õ¡¢¸ü¿ìËÙ´«Ê䣬ÓÐÀûÓÚÒƶ¯ÍøÂç»·¾³¡£ÐèҪעÒâµÄÊÇ£¬HTTP2.0µÄÊײ¿Ñ¹Ëõ£¬ÓëÎÒÃdz£ÓõÄgzipµÈ±¨ÎÄÄÚÈÝѹËõ²»³åÍ»¡£
Á÷Á¿¿ØÖÆ
HTTP/2.0 ¡°Á÷¡±µÄÁ÷Á¿¿ØÖƵÄÄ¿±êÊÇ£ºÔÚ²»¸Ä±äÐÒéµÄÇé¿öÏÂÔÊÐíʹÓöàÖÖÁ÷Á¿¿ØÖÆËã·¨
Á÷Á¿¿ØÖÆÊÇÌض¨ÓÚÒ»¸öÁ¬½ÓµÄ¡£Ã¿ÖÖÀàÐ͵ÄÁ÷Á¿¿ØÖƶ¼ÊÇÔÚµ¥¶ÀµÄÒ»ÌøµÄÁ½¸ö¶ËµãÖ®¼äµÄ£¬²¢²»ÊÇÔÚÕû¸ö¶Ëµ½¶ËµÄ·¾¶Éϵġ££¨ÕâÀïµÄÒ»ÌøÖ¸µÄÊÇHTTPÁ¬½ÓµÄÒ»Ìø£¬¶ø²»ÊÇIP·ÓɵÄÒ»Ìø£©
Á÷Á¿¿ØÖÆÊÇ»ùÓÚWINDOW_UPDATEÖ¡µÄ¡£½ÓÊÕ·½¹«²¼×Ô¼º´òËãÔÚÿ¸öÁ÷ÒÔ¼°Õû¸öÁ¬½ÓÉÏ·Ö±ð½ÓÊÕ¶àÉÙ×Ö½Ú¡£ÕâÊÇÒ»¸öÒÔÐÅÓÃΪ»ù´¡µÄ·½°¸¡£
Á÷Á¿¿ØÖÆÊÇÓз½ÏòµÄ£¬ÓɽÓÊÕÕßÈ«Ãæ¿ØÖÆ¡£½ÓÊÕ·½¿ÉÒÔΪÿ¸öÁ÷ºÍÕû¸öÁ¬½ÓÉèÖÃÈÎÒâµÄ´°¿Ú´óС¡£·¢ËÍ·½±ØÐë×ðÖؽÓÊÕ·½ÉèÖõÄÁ÷Á¿¿ØÖÆÏÞÖÆ¡£¿Í»§·½¡¢·þÎñ¶ËºÍÖмä´úÀí×÷Ϊ½ÓÊÕ·½Ê±¶¼¶ÀÁ¢µØ¹«²¼¸÷×ÔµÄÁ÷Á¿¿ØÖÆ´°¿Ú£¬×÷Ϊ·¢ËÍ·½Ê±¶¼×ñÊضԶ˵ÄÁ÷Á¿¿ØÖÆÉèÖá£
ÎÞÂÛÊÇÐÂÁ÷»¹ÊÇÕû¸öÁ¬½Ó£¬Á÷Á¿¿ØÖÆ´°¿ÚµÄ³õʼֵÊÇ65535×Ö½Ú¡£
Ö¡µÄÀàÐ;ö¶¨ÁËÁ÷Á¿¿ØÖÆÊÇ·ñÊÊÓÃÓÚÖ¡¡£Ä¿Ç°£¬Ö»ÓÐDATAÖ¡·þ´ÓÁ÷Á¿¿ØÖÆ£¬ËùÓÐÆäËüÀàÐ͵ÄÖ¡²¢²»ÏûºÄÁ÷Á¿¿ØÖÆ´°¿ÚµÄ¿Õ¼ä¡£Õâ±£Ö¤ÁËÖØÒªµÄ¿ØÖÆÖ¡²»»á±»Á÷Á¿¿ØÖÆ×èÈû¡£
Á÷Á¿¿ØÖƲ»Äܱ»½ûÓá£
HTTP/2Ö»¶¨ÒåÁËWINDOW_UPDATEÖ¡µÄ¸ñʽºÍÓïÒ壬²¢Ã»Óй涨½ÓÊÕ·½ÈçºÎ¾ö¶¨ºÎʱ·¢ËÍÖ¡¡¢·¢ËÍʲôÑùµÄÖµ£¬Ò²Ã»Óй涨·¢ËÍ·½ÈçºÎÑ¡Ôñ·¢ËÍ°ü¡£¾ßÌåʵÏÖ¿ÉÒÔÑ¡ÔñÈκÎÂú×ãÐèÇóµÄËã·¨¡£
¶à·¸´ÓÃ
ÔÚHTTP1.1ÖУ¬ä¯ÀÀÆ÷¿Í»§¶ËÔÚͬһʱ¼ä£¬Õë¶ÔͬһÓòÃûϵÄÇëÇóÓÐÒ»¶¨ÊýÁ¿µÄÏÞÖÆ¡£³¬¹ýÏÞÖÆÊýÄ¿µÄÇëÇó»á±»×èÈû£¬¶øHTTP2.0ÖеĶà·¸´ÓÃÓÅ»¯ÁËÕâÒ»ÐÔÄÜ¡£
»ùÓÚ¶þ½øÖÆ·ÖÖ¡²ã£¬HTTP2.0¿ÉÒÔÔÚ¹²ÏíTCPÁ¬½ÓµÄ»ù´¡ÉÏ£¬Í¬Ê±·¢ËÍÇëÇóºÍÏìÓ¦¡£HTTPÏûÏ¢±»·Ö½âΪ¶ÀÁ¢µÄÖ¡£¬¶ø²»ÆÆ»µÏûÏ¢±¾ÉíµÄÓïÒ壬½»´í·¢ËͳöÈ¥£¬×îºóÔÚÁíÒ»¶Ë¸ù¾ÝÁ÷IDºÍÊײ¿½«ËûÃÇÖØÐÂ×éºÏ¡£¶Ô±È¿´Ò»ÏÂHTTP1.xºÍHTTP2.0£¬ÕâÀï²»¿¼ÂÇHTTP1.xµÄpipeline»úÖÆ¡£
HTTP2.0³É¹¦½â¾öÁËHTTP1.xµÄ¶ÓÊ××èÈûÎÊÌâ(TCP²ãµÄ×èÈûÈÔÎÞ·¨½â¾ö)£¬Í¬Ê±£¬Ò²²»ÐèҪͨ¹ýpipeline»úÖƶàÌõTCPÁ¬½ÓÀ´ÊµÏÖ²¢ÐÐÇëÇóÓëÏìÓ¦¡£¼õÉÙÁËTCPÁ¬½ÓÊý¶Ô·þÎñÆ÷ÐÔÄÜÓкܴóÌáÉý£¬Í¬Ê±Ò²Ïû³ý²»±ØÒªµÄÑÓ³Ù£¬´Ó¶ø¼õÉÙÒ³Ãæ¼ÓÔصÄʱ¼ä¡£
°ÑHTTPÏûÏ¢·ÖΪºÜ¶à¶ÀÁ¢Ö¡Ö®ºó£¬¾Í¿ÉÒÔͨ¹ýÓÅ»¯ÕâЩ֡µÄ½»´íºÍ´«Êä˳Ðò½øÒ»²½ÓÅ»¯ÐÔÄÜ¡£
ÿ¸öÁ÷¶¼¿ÉÒÔ´øÓÐÒ»¸ö31bitµÄÓÅÏÈÖµ£º0±íʾ×î¸ßÓÅÏȼ¶£»2µÄ31´Î·½-1±íʾ×îµÍÓÅÏȼ¶¡£
¿Í»§¶ËÃ÷È·Ö¸¶¨ÓÅÏȼ¶£¬·þÎñ¶Ë¿ÉÒÔ¸ù¾ÝÕâ¸öÓÅÏȼ¶×÷Ϊ½»»¥Êý¾ÝµÄÒÀ¾Ý£¬±ÈÈç¿Í»§¶ËÓÅÏÈÉèÖÃΪ.css>.js>.jpg¡£·þÎñ¶Ë°´´Ë˳Ðò·µ»Ø½á¹û¸ü¼ÓÓÐÀûÓÚ¸ßЧÀûÓõײãÁ¬½Ó£¬Ìá¸ßÓû§ÌåÑ顣Ȼ¶ø£¬ÔÚʹÓÃÇëÇóÓÅÏȼ¶Ê±Ó¦×¢Òâ·þÎñ¶ËÊÇ·ñÖ§³ÖÇëÇóÓÅÏȼ¶£¬ÊÇ·ñ»áÒýÆð¶ÓÊ××èÈûÎÊÌ⣬±ÈÈç¸ßÓÅÏȼ¶µÄ ÂýÏìÓ¦ÇëÇó»á×èÈûÆäËû×ÊÔ´µÄ½»»¥¡£
HTTP2.0Ôö¼ÓÁË·þÎñ¶ËÍÆË͹¦ÄÜ£¬·þÎñ¶Ë¿ÉÒÔ¸ù¾Ý¿Í»§¶ËµÄÇëÇó£¬ÌáÇ°·µ»Ø¶à¸öÏìÓ¦£¬ÍÆËͶîÍâµÄ×ÊÔ´¸ø¿Í»§¶Ë
ÈçÏÂͼ£¬¿Í»§¶ËÇëÇóstream 1(/page.html)¡£·þÎñÆ÷ÔÚ·µ»Østream 1µÄÏûÏ¢µÄͬʱÍÆËÍÁËstream 2(/script.js)ºÍstream4(/style.css)
HTTP/2ÏÖÔÚÒѾ»ñµÃ¾ø´ó¶àÊýä¯ÀÀÆ÷µÄÖ§³Ö£¬²»¹ýÔÚʹÓùý³ÌÖÐHTTP/2ÐèҪʹÓÃ1.0.1eÖ®ºóµÄopenssl°æ±¾£¬Í¨¹ýnginx -V£¬¿ÉÒԲ鿴nginxµÄopenssl°æ±¾£¬Èç¹û°æ±¾µÍ£¬ÖØбàÒënginx¼´¿É¡£
ÄÇôÔÚnginxÖÐÈçºÎÅäÖÃÖ§³ÖHTTP/2£¿ºÜ¼òµ¥£¬Ö»ÐèÒªÔÚserverÖеÄlisten²¿·ÖÌí¼Óhttp2¼´¿É¡£
Ôõô²âÊÔhttp2ÊÇ·ñÒÑ¿ªÆô£¬·½·¨ºÜ¶à£¬ÕâÀï½éÉÜÈýÖÖ·½·¨£º
1¡¢ä¯ÀÀÆ÷¿ª·¢Õß¹¤¾ß
2¡¢ChromeÀ©Õ¹HTTP/2 and SPDY indicator
3¡¢ÃüÁîÐпͻ§¶Ënghttp
ÁíÍâHTTP/2µÄ·þÎñÆ÷ÍÆËÍ£¬ÐèÒªnginxÅäÖòÅÄÜÓÐЧÀûÓá£
ͨ¹ýhttp2_pushÖ¸ÁîÅäÖÃ
ÕâÖÖÇé¿öÏ£¬demo.htmlÐèÒªÓõ½µÄ×ÊÔ´style.css¡¢image1.jpgºÍimage2.jpg±»ÍÆË͵½¿Í»§¶Ë¡£×ÊÔ´ÉÙµÄÇé¿öÏ£¬ÎÒÃÇ¿ÉÒÔÕâôʹÓ㬵«ÊÇ×ÊÔ´¶àµÄÇé¿öÏÂÕâÖÖ·½Ê½¾Í²»Ì«ÏÖʵ¡£
×Ô¶¯½«×ÊÔ´ÍÆË͸ø¿Í»§¶Ë
nginxÖ§³ÖÀ¹½ØlinkÔ¤¼ÓÔØÍ·µÄÔ¼¶¨£¬ÍÆËÍÕâдͷÖбêʶµÄ×ÊÔ´£¬ÐèÒªÔÚÅäÖÃÖÐÆô¶¯Ô¤¼ÓÔØ£¬ÅäÖÃhttp2_push_preload on
ÕâÀïÒ²ÓÐÒ»¸öÎÊÌ⣬һ°ãµÄ¾²Ì¬×ÊÔ´£¬ÎÒÃǶ¼»áÉèÖûº´æÓÐЧÆÚ¡£µ±¿Í»§¶Ë×ÊÔ´ÔÚ»º´æÓÐЧÆÚÄÚµÄʱºò£¬ÎÒÃÇÇ¿ÖÆÍÆË;²Ì¬×ÊÔ´£¬Ö»»áÔö¼Ó·þÎñÆ÷´ø¿íµÄѹÁ¦£¬ËùÒÔÎÒÃÇÐèÒªÖ¸¶¨¿Í»§¶ËÊÇ·ñÐèÒªÕâЩ×ÊÔ´£¬²¢ÇÒ²»Ì«¿ÉÄÜÒѾ»º´æ¹ý£¬¿ÉÄܵķ½·¨£¬¾ÍÊÇ¿Í»§¶ËÔÚÊ״ηÃÎÊʱ·þÎñ¶ËÍÆËÍ£¬²¢ÔÚËæºóµÄ·ÃÎÊÇëÇóÖаüº¬cookie£¬·þÎñ¶Ëͨ¹ýcookieÈ¥ÅжÏÊÇ·ñ½øÐÐÍÆËÍ£¬¾ÍÊÇÓÐÑ¡ÔñµÄÏò¿Í»§¶ËÍÆËÍ×ÊÔ´£¬ÅäÖ÷½·¨ÈçÏ£º
²âÊÔÈçÏ£º
TLS(Transport Layer Security Protocol£¬´«Êä²ã°²È«ÐÒé)Ö÷ҪĿµÄÊÇÌṩÒþ˽ºÍÊý¾ÝÁÁ¸çͨÐÅÓ¦ÓÃÖ®¼äµÄÍêÕûÐÔ¡£¸ÃÐÒéÓÉÁ½²ã×é³É£ºTLS¼Ç¼ÐÒé(TLS Record)ºÍTLSÎÕÊÖÐÒé(TLS Handshake)¡£
TLSÐÒé¾¹ýºÜ¶à´Î°æ±¾µÄ¸üУ¬Ä¿Ç°µÍ°æ±¾µÄTLS£¬ÈçSSL 3.0/TLS 1.0µÈ£¬´æÔÚÐí¶àÑÏÖØ©¶´£¬Ä¿Ç°Êܵ½Ö÷Á÷Ö§³ÖµÄTLSÐÒé°æ±¾ÊÇ1.1ºÍ1.2£¬µ«Ò²¶¼ÒѾÂäºóÓÚʱ´úµÄÐèÇó¡£ÔÚ2018Äê8Ô·ݣ¬IETFÖÕÓÚÐû²¼TLS 1.3¹æ·¶Õýʽ·¢²¼ÁË£¬±ê×¼¹æ·¶¶¨ÒåÔÚrfc8446¡£
Ïà½ÏÓÚ֮ǰµÄ°æ±¾TLSÓÅ»¯ÄÚÈÝÓУº
ÔÚhttpsÖУ¬Ã¿¸öÁ¬½ÓµÄTLSµÄÎÕÊÖÊǺÜÏûºÄ×ÊÔ´¼°Ê±¼äµÄ£¬ËùÒÔTLS 1.3µÄÓÅ»¯£¬±È֮ǰµÄ°æ±¾½¨Á¢Á¬½ÓµÄʱ¼äÉÙÁËÒ»¸öRTT£¬Í¬µÈÇé¿öÏ£¬½ÚÊ¡Á˺ܶàʱ¼ä£¬Ìá¸ßÁËÏìÓ¦Ëٶȡ£
TLS 1.3ÐèÒªopenssl 1.1.1Ö§³Ö£¬ÔÚnginxÉÏ£¬ÐèÒªnginx 1.13+Ö§³Ö¡£
ÔÚ±àÒënginxµÄʱºò£¬ÐèÒªÌí¼Ó±àÒë²ÎÊý--with-openssl-opt=enable-tls1_3À´¿ªÆôTLS 1.3Ö§³Ö£¬²¢ÔÚÅäÖÃÖÐssl_protocolsÖÐÌí¼ÓTLSv1.3£¬¶ÔÓ¦µÄTLS1.3ÒýÈëÁËеÄËã·¨£¬ËùÒÔssl_ciphersÒ²ÐèÒªÌí¼ÓÐÂËã·¨
ĬÈÏÇé¿öÏÂnginxÒòΪ°²È«ÔÒò£¬Ã»ÓпªÆôTLS 1.3µÄ 0-RTT£¬¿ÉÒÔͨ¹ýÖ¸Áîssl_early_data onÀ´¿ªÆô¡£
ECC(Elliptic curve cryptography£¬ÍÖÔ²ÇúÏßÃÜÂëѧ)£¬Ò»ÖÖ½¨Á¢¹«¿ªÃÜÔ¿µÄËã·¨£¬»ùÓÚÍÖÔ²ÇúÏßÊýѧ¡£
ÄÚÖÃECDSA¹«Ô¿µÄÖ¤ÊéÒ»°ã³ÆΪECCÖ¤Ê飬ÄÚÖÃRSA¹«Ô¿µÄÖ¤ÊéÒ»°ã³ÆΪRSAÖ¤Êé¡£
ECCËã·¨µÄÊýѧÀíÂ۷dz£Éî°ÂºÍ¸´ÔÓ£¬ÔÚ¹¤³ÌÓ¦ÓÃÖбȽÏÄÑÓÚʵÏÖ£¬µ«ËüµÄµ¥Î»°²È«Ç¿¶ÈÏà¶Ô½Ï¸ß£¬ËüµÄÆÆÒë»òÇó½âÄѶȻù±¾ÉÏÊÇÖ¸Êý¼¶µÄ£¬ºÚ¿ÍºÜÄÑÓÃͨ³£Ê¹Óõı©Á¦ÆƽâµÄ·½·¨À´Æƽ⡣RSAËã·¨µÄÌصãÖ®Ò»ÊÇÊýѧÔÀíÏà¶Ô¼òµ¥£¬ÔÚ¹¤³ÌÓ¦ÓÃÖбȽÏÒ×ÓÚʵÏÖ£¬µ«ËüµÄµ¥Î»°²È«Ç¿¶ÈÏà¶Ô½ÏµÍ¡£Òò´Ë£¬ECCËã·¨µÄ¿ÉÒÔÓýÏÉٵļÆËãÄÜÁ¦Ìṩ±ÈRSA¼ÓÃÜËã·¨¸ü¸ßµÄ°²È«Ç¿¶È£¬ÓÐЧµØ½â¾öÁË¡°Ìá¸ß°²È«Ç¿¶È±ØÐëÔö¼ÓÃÜÔ¿³¤¶È¡±µÄ¹¤³ÌʵÏÖÎÊÌâ¡£
ÓëRSAËã·¨Ïà±È£¬ECCËã·¨ÓµÓÐÒ»ÏÂÓÅÊÆ£º
²»¹ýʹÓÃECCÖ¤ÊéÓÐÁ½¸öÎÊÌâÐèҪעÒ⣺
1¡¢²»ÊÇËùÓÐÀàÐÍÖ¤Ê鶼֧³ÖECC£¬Ò»°ãÐèÒªÉÌÒµÖ¤ÊéµÄÔöÇ¿°æ±¾ÖвÅÖ§³Ö
2¡¢Ò»Ð©¾ÉµÄÉ豸»òä¯ÀÀÆ÷²»Ö§³ÖECC£¬¿ÉÄÜÐèÒªECC+RSAË«Ö¤ÊéµÄģʽÀ´Ê¹ÓÃ
BrotliÊÇGoogleÓÚ2015Äê9ÔÂÍƳöµÄÎÞËðѹËõËã·¨£¬Brotliͨ¹ý±äÖÖµÄLZ77Ëã·¨¡¢Huffman±àÂëÒÔ¼°¶þ½×Îı¾½¨Ä£µÈ·½Ê½½øÐÐÊý¾ÝѹËõ£¬ÓëÆäËûѹËõËã·¨Ïà±È£¬ËüÓÐÕ߸ü¸ßµÄѹËõЧÂÊ¡£
¸ü¾ßGoogle·¢²¼µÄ±¨¸æÖ¸³ö£¬BrotliÓÐÒ»ÏÂÌص㣺
BrotliµÄÖ§³Ö±ØÐëÒÀÀµHTTPS£¬nginxÖ§³ÖBrotli±ØÐë±à¼Ìí¼ÓbrotliÄ£¿é
brotliÄ£¿éÔ´ÂëµØÖ·https://github.com/eustas/ngx_brotli.git£¬ÏÂÔØÖ®ºó£¬ÔÚnginx±àÒëµÄʱºòͨ¹ý±àÒë²ÎÊý--add-module=/path/to/ngx_brotli½øÐбàÒëÌí¼Ó¡£Ìí¼ÓÖ®ºóͨ¹ýÅäÖÃÎļþÖÐÌí¼ÓÅäÖÃÆôÓÃbrotli¡£
ÔÚ¿ª·¢Õß¹¤¾ßÖв鿴headers£º
¸Ï¿ìÓÅ»¯Ò»ÏÂÄãµÄHTTPS°É£¡
ÁìȡרÊô 10ÔªÎÞÃż÷ȯ
˽Ïí×îР¼¼Êõ¸É»õ