ในช่วง 20 ปีที่ผ่านมาเวิลด์ไวด์เว็บมีการพัฒนาอย่างมาก เทคโนโลยีเว็บที่ได้รับการปรับปรุงทั้งหมดต้องการโซลูชันและโปรโตคอลที่ดีขึ้นและเร็วขึ้นสำหรับการสื่อสารและการถ่ายโอนไฟล์มากกว่าเทคโนโลยีปัจจุบัน (HTTP) ซึ่งถึงขีด จำกัด ทางเทคโนโลยี
HTTP / 2 คืออะไร?
HTTP / 2 คือ Hypertext เวอร์ชันใหม่ล่าสุด Transport Protocol (HTTP) - โปรโตคอลพื้นฐานที่ใช้โดย World Wide Web . ได้รับการอนุมัติครั้งแรกในเดือนกุมภาพันธ์ 2015 ซึ่งเป็นเวลาเกือบ 20 ปีหลังจาก HTTP ดั้งเดิม HTTP / 2 ช่วยลดเวลาในการโหลดและปรับปรุงการสื่อสารระหว่างเซิร์ฟเวอร์และเบราว์เซอร์มากมาย เบราว์เซอร์ส่วนใหญ่ได้เพิ่ม HTTP / 2 ไว้แล้วและไม่ได้เปลี่ยนแปลงหลาย ๆ อย่างจากมุมมองของผู้ใช้ นั่นคือเหตุผลหลักว่าทำไมพวกเราหลายคนยังไม่เคยอ่านหรือได้ยินเรื่องนี้
HTTP / 2 ทำอะไร
ในฐานะผู้สืบทอดของ HTTP HTTP / 2 มุ่งเน้นไปที่การปรับปรุงคุณลักษณะทั้งหมดของ HTTP . เพื่อรักษาความเข้ากันได้แบบย้อนหลังกับโปรโตคอลรุ่นเก่าจะยังคงใช้ฟังก์ชันส่วนใหญ่ของ HTTP อย่างไรก็ตามแนะนำการปรับปรุงที่รุนแรงบางอย่าง
ทั้ง HTTP หรือ HTTP / 2 กำหนด:
- การดำเนินการใดที่เว็บเบราว์เซอร์และเซิร์ฟเวอร์ต้องตอบสนองต่อคำสั่งต่างๆ
- ข้อมูลทุกบิตถูกโอนจากคอมพิวเตอร์เครื่องหนึ่งไปยังคอมพิวเตอร์เครื่องอื่นผ่านเว็บอย่างไร
- วิธีสร้างจัดรูปแบบและส่งข้อความ
กล่าวอีกนัยหนึ่งคือ HTTP และ HTTP / 2 กำหนดมาตรฐานสำหรับวิธีการส่งเนื้อหาเว็บไปยังคอมพิวเตอร์ของคุณโดยมีข้อแตกต่างที่ HTTP / 2 ทำให้ทุกสิ่งเร็วกว่ารุ่นก่อน คุณสามารถดูรายละเอียดว่า HTTP / 2 ทำอะไรได้ที่นี่
Multiplexed Streams
เฟรมรูปแบบข้อความแบบสองทิศทางที่ส่งผ่านโปรโตคอล HTTP / 2 ระหว่างเซิร์ฟเวอร์และไคลเอนต์หนึ่งเรียกว่า 'สตรีม' HTTP สามารถส่ง 'สตรีม' เหล่านี้ได้ครั้งละหนึ่งรายการเท่านั้น หลังจากส่งสตรีมแล้วจะมีการหน่วงเวลาระหว่างการส่งสตรีมถัดไป
HTTP / 2 สร้างเลเยอร์เฟรมไบนารีใหม่ที่ช่วยแก้ปัญหาโดยตรงด้วยการส่ง 'สตรีม' ทีละรายการ ช่วยให้ไคลเอนต์และเซิร์ฟเวอร์แยกส่วนเพย์โหลด HTTP / 2 ออกเป็นลำดับเฟรมแบบสอดแทรกเล็ก ๆ อิสระและจัดการได้ง่าย ข้อมูลทั้งหมดนี้ประกอบขึ้นใหม่เมื่อได้รับจากอีกด้านหนึ่ง โปรโตคอลนี้ช่วยให้สามารถแลกเปลี่ยนลำดับสองทิศทางแบบเปิดพร้อมกันและอิสระโดยไม่มีเวลาแฝงระหว่างสตรีมที่ต่อเนื่องกัน
สิทธิประโยชน์:
- คำขอและการตอบสนองแบบมัลติเพล็กซ์แบบขนานจะไม่ปิดกั้นซึ่งกันและกัน
- การเชื่อมต่อ TCP เดียวสามารถรับประกันการใช้ทรัพยากรเครือข่ายอย่างมีประสิทธิภาพแม้ว่าจะส่งข้อมูลหลายสตรีม
- ประสิทธิภาพของเว็บที่เร็วขึ้นเวลาในการตอบสนองลดลงและผลลัพธ์ของเครื่องมือค้นหาที่ดีขึ้น
- CapEx และ OpEx ที่ลดลงในการรันทรัพยากรเครือข่ายและไอที
HTTP / 2 Server Push และ Cache Push
นี้ เป็นความสามารถที่อนุญาตให้เซิร์ฟเวอร์ส่งข้อมูลเพิ่มเติมที่สามารถแคชไปยังไคลเอนต์ได้ . ไม่มีการร้องขอข้อมูลดังกล่าว แต่คาดว่าจะเป็นคำขอในอนาคต หากไคลเอ็นต์ร้องขอทรัพยากร A หนึ่งรายการและเป็นที่ทราบกันดีว่าทรัพยากร B อื่นอ้างอิงกับทรัพยากรที่ร้องขอเซิร์ฟเวอร์สามารถผลักดัน B พร้อมกับ A แทนที่จะรอคำขอของไคลเอ็นต์อื่น จากนั้นไคลเอนต์จะบันทึกทรัพยากรที่ผลักดัน B ลงในแคชเพื่อใช้ในอนาคต คุณลักษณะนี้จะบันทึกกระบวนการไป - กลับที่ตอบกลับคำขอทั้งหมดและลดเวลาแฝงของเครือข่าย เดิม Google เปิดตัว Server Push ในโปรโตคอล SPDY
การปรับปรุง HTTP / 2 อีกประการหนึ่งคือ Cache Push การดำเนินการนี้เป็นการอัปเดตเชิงรุกหรือทำให้แคชของไคลเอนต์ไม่ถูกต้อง สิ่งนี้ช่วยให้เซิร์ฟเวอร์สามารถระบุทรัพยากรแบบพุชที่เป็นไปได้ที่ลูกค้าไม่ต้องการ
สิทธิประโยชน์:
- ไคลเอนต์สามารถปฏิเสธทรัพยากรที่ถูกผลักเพื่อรักษาที่เก็บทรัพยากรที่แคชไว้อย่างมีประสิทธิภาพ (หรือแม้กระทั่งปิดใช้งานเซิร์ฟเวอร์พุชทั้งหมด)
- ไคลเอนต์สามารถ จำกัด จำนวนสตรีมที่พุชมัลติเพล็กซ์พร้อมกันได้
- เซิร์ฟเวอร์สามารถจัดลำดับความสำคัญของทรัพยากรที่ผลักดัน นี่คือกุญแจสำคัญในความแตกต่างของประสิทธิภาพระหว่าง HTTP / 2 และ HTTP
- เซิร์ฟเวอร์สามารถมัลติเพล็กซ์ผลักดันทรัพยากรพร้อมกับข้อมูลที่ลูกค้าร้องขอภายในการเชื่อมต่อ TCP เดียวกัน
- ไคลเอ็นต์สามารถใช้ทรัพยากรที่แคชในเพจต่างๆ
- ไคลเอนต์บันทึกทรัพยากรที่ผลักไว้ในหน่วยความจำแคช
ไบนารีโปรโตคอล
HTTP / 2 มีการปรับปรุงความสามารถอย่างมากเมื่อเปลี่ยนโปรโตคอลข้อความเป็นโปรโตคอลไบนารี . ในขณะที่ HTTP ใช้เพื่อประมวลผลคำสั่งข้อความเพื่อดำเนินการรอบการตอบสนองคำขอ HTTP / 2 อาศัยคำสั่งไบนารี ซึ่งจะทำให้เวลาสั้นลง (เป็น 1 วินาทีและ 0 วินาที) สำหรับการดำเนินงานเดียวกัน
เบราว์เซอร์ที่รองรับ HTTP / 2 จะแปลงคำสั่งข้อความเป็นรหัสไบนารีก่อนที่จะส่งผ่านเครือข่าย อย่างไรก็ตามเลเยอร์เฟรมไบนารีไม่สามารถทำงานร่วมกับเซิร์ฟเวอร์ HTTP และไคลเอนต์ได้
สิทธิประโยชน์:
- การป้องกันข้อกังวลด้านความปลอดภัยที่เกี่ยวข้องกับลักษณะที่เป็นข้อความของ HTTP (เช่นการตอบสนองการแยกการโจมตี)
- เปิดใช้ความสามารถ HTTP / 2 เช่นการบีบอัดการจัดลำดับความสำคัญมัลติเพล็กซ์การจัดการ TLS ที่มีประสิทธิภาพและการควบคุมโฟลว์
- การแสดงคำสั่งอย่างกะทัดรัดช่วยให้ใช้งานและประมวลผลได้ง่ายขึ้น
- การประมวลผลข้อมูลที่แข็งแกร่งและมีประสิทธิภาพระหว่างไคลเอนต์และเซิร์ฟเวอร์
- ปรับปรุงปริมาณงานและลดเวลาแฝงของเครือข่าย
- โอกาสที่จะเกิดข้อผิดพลาดน้อยลงเมื่อเปรียบเทียบกับ HTTP
- การใช้ทรัพยากรเครือข่ายที่มีประสิทธิภาพสูง
- ค่าใช้จ่ายต่ำในการแยกวิเคราะห์ข้อมูล
- รอยเท้าเครือข่ายที่เบากว่า
การจัดลำดับความสำคัญของสตรีม
HTTP / 2 อนุญาตให้ไคลเอ็นต์กำหนดค่ากำหนดสำหรับสตรีมข้อมูลเฉพาะ เซิร์ฟเวอร์ไม่ผูกมัดในการปฏิบัติตามคำแนะนำของไคลเอ็นต์เหล่านี้ แต่กลไกนี้ช่วยให้เซิร์ฟเวอร์สามารถเพิ่มประสิทธิภาพการจัดสรรทรัพยากรเครือข่ายตามความต้องการของผู้ใช้ .
การจัดลำดับความสำคัญของสตรีมทำงานร่วมกับน้ำหนักและการอ้างอิงที่กำหนดให้กับแต่ละสตรีม แม้ว่าสตรีมทั้งหมดจะขึ้นอยู่กับกันและกันโดยเนื้อแท้ยกเว้น แต่จะมีน้ำหนักที่กำหนดระหว่าง 1 ถึง 256 กลไกการจัดลำดับความสำคัญของสตรีมยังคงเป็นหัวข้อของการถกเถียงกัน อย่างไรก็ตามเมื่อรวมการจัดลำดับความสำคัญของสตรีมกับความสามารถ HTTP / 2 ในการประมวลผลสตรีมข้อมูลหลายรายการในการเชื่อมต่อ TCP เดียวอาจทำให้เกิดการร้องขอเซิร์ฟเวอร์ที่มีลำดับความสำคัญต่างกันพร้อมกัน
สิทธิประโยชน์:
- ลดผลกระทบเชิงลบของความกังวลเกี่ยวกับเวลาแฝงของเครือข่าย
- ปรับปรุงประสบการณ์ผู้ใช้และความเร็วในการโหลดเพจ
- การเพิ่มประสิทธิภาพในการสื่อสารข้อมูลระหว่างเซิร์ฟเวอร์และไคลเอนต์
- การใช้ทรัพยากรเครือข่ายที่มีประสิทธิภาพสูง
- ลดเวลาในการจัดส่งสำหรับคำขอเนื้อหาหลัก
การบีบอัดส่วนหัวแบบ Stateful
เมื่อผู้ใช้เรียกดูเว็บไซต์สื่อที่มีเนื้อหาหลากหลายโดยใช้ HTTP ไคลเอ็นต์จะพุชเฟรมส่วนหัวที่ใกล้เคียงกันหลายเฟรม เป็นกรณีนี้เนื่องจากคำขอของไคลเอ็นต์แต่ละรายการต้องมีข้อมูลมากที่สุดเท่าที่เซิร์ฟเวอร์ต้องการเพื่อดำเนินการตามที่ร้องขอ กระบวนการนี้นำไปสู่ความล่าช้าและการใช้ทรัพยากรโดยไม่จำเป็น
HTTP / 2 มีความสามารถในการบีบอัดเฟรมส่วนหัวที่ซ้ำซ้อนจำนวนมาก ใช้ข้อมูลจำเพาะของ HPACK เป็นวิธีการบีบอัดส่วนหัวที่ปลอดภัยและเรียบง่าย . ไคลเอนต์และเซิร์ฟเวอร์เก็บรักษารายการส่วนหัวที่ใช้ในคำขอไคลเอ็นต์เซิร์ฟเวอร์ก่อนหน้านี้ สิ่งนี้ช่วยแก้ปัญหาโดยตรงเกี่ยวกับกรอบส่วนหัวที่ซ้ำซ้อน
สิทธิประโยชน์:
- เข้ารหัสส่วนหัวที่ใช้กันทั่วไปและส่วนหัวขนาดใหญ่ ซึ่งทำให้ไม่จำเป็นต้องส่งเฟรมส่วนหัวทั้งหมด ขนาดแต่ละสตรีมหดลงอย่างมาก
- การป้องกันการโจมตีด้านความปลอดภัยเช่น CRIME สำรวจสตรีมข้อมูลด้วยส่วนหัวที่บีบอัด
- การใช้กลไกมัลติเพล็กซ์อย่างมีประสิทธิภาพ
- การจัดลำดับความสำคัญของสตรีมที่มีประสิทธิภาพ
- ค่าใช้จ่ายด้านทรัพยากรลดลง
ประโยชน์ในโลกแห่งความเป็นจริงของ HTTP / 2
HTTP / 2 มุ่งเน้นไปที่การเพิ่มศักยภาพของเทคโนโลยีให้สูงสุด เพื่อตอบสนองความต้องการและความคาดหวังในอนาคต นี่คือประโยชน์ในโลกแห่งความเป็นจริงของการใช้ HTTP / 2
ประสิทธิภาพของเว็บและเว็บบนมือถือ - HTTP / 2 มีความสามารถในการส่งและรับข้อมูลเพิ่มเติมในวงจรการสื่อสารไคลเอนต์เซิร์ฟเวอร์เดียว ทำงานได้ดีในการลดเวลาแฝงในการเข้าถึงบริการอินเทอร์เน็ตบนเครือข่ายข้อมูลมือถือและเครือข่ายที่มีแบนด์วิดท์ จำกัด ต่อผู้ใช้
อินเทอร์เน็ตความเร็วสูงที่ถูกกว่า - HTTP / 2 เพิ่มประสิทธิภาพของการสื่อสารข้อมูล ซึ่งช่วยให้ผู้ให้บริการอินเทอร์เน็ตลดค่าใช้จ่ายโดยรวมในขณะที่รักษามาตรฐานของอินเทอร์เน็ตความเร็วสูง
ความปลอดภัย - HTTP / 2 ไม่เสี่ยงต่อภัยคุกคามที่กำหนดเป้าหมายโปรโตคอลเลเยอร์แอปพลิเคชันแบบข้อความ นอกจากนี้ยังใช้แนวทาง“ Security by Obscurity” เพื่อปกป้องการส่งข้อมูลที่ละเอียดอ่อนระหว่างไคลเอนต์และเซิร์ฟเวอร์
การเข้าถึงที่กว้างขวาง - ข้อดีของ HTTP / 2 ช่วยลดผลลัพธ์ทางอินเทอร์เน็ตสำหรับผู้ให้บริการ ซึ่งจะนำไปสู่การครอบคลุมอินเทอร์เน็ตที่กว้างขึ้นในระดับโลก
ประสบการณ์เว็บที่มีสื่อสมบูรณ์ - คุณสมบัติและข้อดีของเทคโนโลยีที่ HTTP / 2 นำมาสู่เวิลด์ไวด์เว็บเป็นโครงสร้างพื้นฐานที่สามารถนำเสนอเนื้อหาที่มีสื่อมากมายด้วยความเร็วในการโหลดหน้าเว็บที่เร็วขึ้น
สรุป
HTTP / 2 เป็นโปรโตคอลที่ค่อนข้างใหม่ แต่การรองรับก็เพิ่มขึ้นอย่างต่อเนื่อง ปัจจุบันอินเทอร์เน็ตเบราว์เซอร์ส่วนใหญ่รองรับ HTTP / 2 (Microsoft Edge, Google Chrome, Safari, Firefox, Chrome สำหรับ Android) เว็บเซิร์ฟเวอร์จำนวนมากมีการรองรับ HTTP / 2 เนทีฟ (Apache HTTP Server, Tomcat, NGINX) ไม่ต้องสงสัยเลยว่า HTTP / 2 คือโปรโตคอล WWW แห่งอนาคต
อ่าน 5 นาที