Keuntungan HTTP/2 Hingga Perbedaannya Dengan HTTP/1.1
HTTP/2 memperkenalkan model pengiriman baru yang memungkinkan multipleksing beberapa aliran data dalam satu koneksi. Hal ini tidak hanya mengurangi latensi tetapi juga meningkatkan efisiensi penggunaan bandwidth. Selain itu, HTTP/2 memungkinkan penentuan prioritas untuk berbagai jenis konten, memastikan bahwa konten yang lebih penting dimuat lebih dulu.
Salah satu perbedaan HTTP/2 dengan HTTP/1.1 adalah HTTP/2 dirancang untuk meningkatkan kinerja bagi pengguna akhir dengan berbagai fitur baru. Sedangkan HTTP/1.1 tidak memiliki fitur ini, sehingga harus menunggu permintaan eksplisit dari klien untuk setiap sumber daya.
Pengertian HTTP/2
HTTP/2 adalah pengembangan dari protokol SPDY yang awalnya diciptakan oleh Google dengan tujuan utama mengurangi latensi pemuatan halaman web melalui teknik-teknik seperti kompresi data, multipleksing, dan penentuan prioritas.
SPDY kemudian menjadi dasar bagi HTTP/2 saat kelompok kerja Hypertext Transfer Protocol (httpbis) dari Internet Engineering Task Force (IETF) mulai menyusun standar baru.
Puncak dari upaya ini adalah publikasi HTTP/2 pada Mei 2015. Sejak awal, berbagai browser besar seperti Chrome, Opera, Internet Explorer, dan Safari telah mendukung upaya standardisasi ini, yang mengakibatkan tingkat adopsi HTTP/2 yang cepat dan signifikan, terutama di kalangan situs web baru.
Dukungan luas dari berbagai browser utama seperti Chrome, Opera, Internet Explorer, dan Safari memainkan peran penting dalam adopsi cepat HTTP 2. Dengan dukungan ini, pengembang dapat dengan mudah mengimplementasikan HTTP 2 dan memanfaatkan berbagai keuntungan yang ditawarkannya.
Hal ini memungkinkan situs web baru untuk lebih cepat mengadopsi protokol baru ini, memberikan manfaat langsung dari peningkatan kinerja dan efisiensi.
Salah satu fitur paling signifikan yang membedakan HTTP/1.1 dari HTTP/2 adalah penggunaan lapisan framing biner. Di HTTP/1.1, semua permintaan dan respons dikirim dalam format teks biasa, sementara HTTP 2 menggunakan format biner untuk semua pesan.
Meskipun semantik HTTP seperti metode dan header tetap dipertahankan, lapisan framing biner ini mengubah pesan HTTP konvensional menjadi format biner setelah dibuat.
Hal ini memungkinkan aplikasi web yang sudah ada untuk terus berfungsi dengan baik saat menggunakan HTTP 2, tanpa perlu perubahan besar.
Konversi pesan ke format biner memberikan HTTP 2 kemampuan untuk menerapkan metode pengiriman data yang baru dan lebih efisien yang tidak tersedia di HTTP/1.1.
Dengan framing biner, HTTP 2 dapat mengatasi beberapa keterbatasan HTTP/1.1, seperti efisiensi pengiriman data dan pengelolaan banyak permintaan secara simultan.
Hal ini memungkinkan pengiriman data yang lebih cepat dan pengelolaan sumber daya yang lebih baik. HTTP/1.1 menggunakan model pengiriman data yang sederhana namun kurang efisien, terutama ketika harus menangani banyak permintaan dan respons secara bersamaan.
Di sisi lain, HTTP 2 memperkenalkan model pengiriman baru yang memungkinkan multipleksing beberapa aliran data dalam satu koneksi. Hal ini tidak hanya mengurangi latensi tetapi juga meningkatkan efisiensi penggunaan bandwidth.
Selain itu, HTTP 2 memungkinkan penentuan prioritas untuk berbagai jenis konten, memastikan bahwa konten yang lebih penting dimuat lebih dulu.
Keuntungan HTTP/2
Mengapa HTTP/2 lebih baik untuk digunakan? Mari kita jelajahi kelebihan-kelebihannya secara rinci.
Format Biner, Bukan Teks
Salah satu perbedaan utama HTTP/2 adalah bahwa ia menggunakan format biner, bukan format teks seperti pendahulunya, HTTP/1.1. Hal ini berarti data dikodekan dalam bentuk biner, yang lebih efisien dan mengurangi kesalahan dalam interpretasi data.
Multipleksing Sepenuhnya
HTTP/2 memungkinkan pengiriman banyak permintaan data secara paralel melalui satu koneksi TCP. Hal ini adalah salah satu fitur paling canggih dari HTTP/2, memungkinkan kamu mengunduh file web secara asinkron dari satu server. Kebanyakan browser modern membatasi jumlah koneksi TCP ke satu server, jadi kemampuan ini sangat meningkatkan efisiensi dan kecepatan pengunduhan.
Kompresi Header dengan HPACK
HTTP/2 menggunakan kompresi header HPACK untuk mengurangi overhead data. Kompresi ini berarti lebih sedikit data yang perlu dikirim, mempercepat proses komunikasi antara klien dan server.
Server Push
HTTP/2 memungkinkan server untuk “mendorong” respons secara proaktif ke dalam cache klien tanpa harus menunggu permintaan baru untuk setiap sumber daya. Hal ini berarti server dapat mengirimkan sumber daya yang diperlukan sebelumnya, mempercepat waktu muat halaman.
Ekstensi ALPN
HTTP/2 menggunakan ekstensi ALPN (Application-Layer Protocol Negotiation) yang memungkinkan koneksi terenkripsi lebih cepat. Protokol aplikasi ditentukan selama koneksi awal, mengurangi waktu yang diperlukan untuk membangun koneksi aman.
Mengurangi Waktu Pulang Pergi (RTT)
Dengan mengurangi waktu pulang pergi tambahan, HTTP/2 membuat situs web kamu memuat lebih cepat tanpa perlu pengoptimalan tambahan. Hal ini berarti pengguna dapat menikmati pengalaman browsing yang lebih cepat dan responsif.
Dukungan Luas oleh Browser
Sebagai teknologi dasar internet, HTTP/2 didukung oleh sebagian besar browser modern. Dukungan luas ini memastikan bahwa protokol ini dapat berfungsi dengan baik dan memberikan semua manfaatnya kepada pengguna.
Perbedaan HTTP/2 dan HTTP/1.1
HTTP 2 dirancang untuk mengatasi banyak kelemahan yang ada pada HTTP/1.1. Berikut adalah beberapa perbedaan utama antara kedua versi protokol ini:
Kompresi
HTTP 2 memiliki fitur kompresi header permintaan bawaan yang dikenal sebagai HPACK. Aplikasi web modern sering menerima berbagai header yang berbeda, seperti otorisasi, instruksi caching, dan informasi klien. Meskipun kompresi ini mungkin tidak berdampak besar untuk satu permintaan, dalam aplikasi dengan lalu lintas tinggi, penghematan data menjadi signifikan. Sebaliknya, HTTP/1.1 tidak mengompresi header secara default, yang dapat menyebabkan penggunaan bandwidth yang lebih besar.
Kinerja
HTTP 2 dirancang untuk meningkatkan kinerja bagi pengguna akhir dengan berbagai fitur baru. Salah satu contohnya adalah kemampuan server untuk “mendorong” sumber daya eksternal ke browser klien sebelum diminta secara eksplisit, yang disebut server push. HTTP/1.1 tidak memiliki fitur ini, sehingga harus menunggu permintaan eksplisit dari klien untuk setiap sumber daya.
Protokol Biner
HTTP 2 menggunakan format biner, bukan teks seperti HTTP/1.1. Hal ini berarti perintah lebih mudah diimplementasikan dan risiko kesalahan yang disebabkan oleh spasi opsional pada format teks dihilangkan. Browser yang mendukung HTTP 2 akan mengubah perintah teks menjadi format biner sebelum mengirimkannya melalui jaringan, meningkatkan efisiensi dan keandalan.
Keamanan
Dengan menggunakan format biner, HTTP 2 menghilangkan risiko serangan pemisahan respons yang mungkin terjadi pada HTTP/1.1. Pada HTTP/1.1, penyerang bisa memanipulasi header respons dengan menyisipkan spasi ke dalam respons tekstual. Hal ini tidak mungkin dilakukan dengan format biner HTTP 2, sehingga protokol ini lebih aman.
Model Pengiriman
HTTP/1.1 mengirimkan respons berdasarkan satu permintaan secara berurutan, sedangkan HTTP 2 menggunakan fitur multipleksing dan server push untuk meningkatkan kinerja pengiriman. Multipleksing memungkinkan pengiriman beberapa permintaan dan respons secara bersamaan melalui satu koneksi, mengurangi latensi dan meningkatkan efisiensi.
Pengelolaan Buffer
Dalam HTTP/1.1, kontrol aliran untuk mengelola ruang buffer dilakukan pada lapisan transport. Sedangkan HTTP 2 memungkinkan klien dan server mengimplementasikan kontrol aliran mereka sendiri, sehingga mereka dapat mengomunikasikan ruang buffer yang tersedia secara lebih efisien.
Multipleksing
HTTP/2 mendukung multipleksing penuh untuk permintaan dan respons. Hal ini berarti satu koneksi ke server web dari browser dapat digunakan untuk mengirim banyak permintaan dan menerima banyak respons secara bersamaan. Hal ini menghilangkan kebutuhan untuk membuat koneksi baru untuk setiap permintaan, yang tidak didukung oleh HTTP/1.1, sehingga mengurangi waktu tambahan yang diperlukan.
Koneksi Terenkripsi Lebih Cepat
HTTP/2 menggunakan ekstensi ALPN (Application-Layer Protocol Negotiation) yang memungkinkan koneksi terenkripsi lebih cepat. Protokol aplikasi ditentukan selama koneksi awal, mengurangi waktu yang diperlukan untuk negosiasi enkripsi. HTTP/1.1 tanpa ALPN membutuhkan perjalanan bolak-balik tambahan untuk jabat tangan enkripsi, yang memperlambat proses koneksi.
Tidak Perlu Solusi HTTP/1.1
Untuk mengatasi keterbatasan HTTP/1.1, berbagai solusi seperti sharding domain dan penggabungan konten sering digunakan.
Sharding domain mengelabui browser agar membuka lebih banyak koneksi simultan daripada yang biasanya diizinkan, sementara penggabungan konten mengurangi jumlah permintaan sumber daya yang berbeda dengan menggabungkan semua CSS dan JavaScript ke dalam satu file.
Dengan multipleksing bawaan di HTTP/2, solusi ini tidak lagi diperlukan, sehingga membuat pengelolaan dan pengembangan web menjadi lebih sederhana dan efisien.
Cara menggunakan HTTP/2
Jika kamu adalah pengguna sisi klien, langkah yang perlu kamu lakukan sangat sederhana: cukup perbarui browser kamu ke versi terbaru. Sebagian besar browser modern sudah mendukung HTTP/2, jadi dengan pembaruan ini, kamu sudah siap memanfaatkan semua kelebihan HTTP/2.
Namun, bagi pengguna sisi server, proses peningkatan ke HTTP/2 sedikit lebih kompleks. Berikut ini panduan singkat untuk mengaktifkan HTTP/2 pada server Apache yang menjalankan Ubuntu 14.04. Perlu dicatat bahwa konfigurasi lain mungkin memerlukan lebih banyak langkah dan sebaiknya dilakukan oleh teknisi DevOps yang berpengalaman, seperti pengaturan di Microsoft IIS.
Mengaktifkan HTTP/2 pada Apache
Berikut ini langkah-langkah untuk mengaktifkan HTTP/2 di Apache Server, meliputi :
1. Instalasi Apache Versi 2.4.17 atau Lebih Tinggi
Pastikan kamu menginstal Apache versi 2.4.17 atau lebih baru di server kamu. HTTP 2 tidak didukung pada versi Apache yang lebih lama.
2. Tambahkan Repository
Tambahkan repository untuk mendapatkan modul terbaru yang diperlukan untuk mengaktifkan HTTP 2:
1 |
sudo add-apt-repository ppa:ondrej/apache2 |
3. Perbarui Apache
Perbarui Apache dari repository yang baru ditambahkan untuk mendapatkan versi terbaru:
1 2 |
sudo apt-get update sudo apt-get upgrade apache2 |
4. Aktifkan Modul HTTP/2
Aktifkan modul HTTP 2 pada Apache dengan perintah berikut:
1 |
sudo a2enmod http2 |
5. Konfigurasi Host Virtual
Buka file konfigurasi untuk host virtual kamu. File ini biasanya terletak di direktori /etc/apache2/sites-available/ dan memiliki ekstensi .conf. kamu akan melihat konfigurasi seperti berikut:
1 2 3 4 5 6 7 8 9 10 11 12 |
<VirtualHost 192.168.1.1:443> SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP SSLCertificateFile /etc/ssl/star.example.com.crt SSLCertificateKeyFile /etc/ssl/star.example.com.key ServerName "one.example.com" DocumentRoot "/var/www/html/one" CustomLog "/var/log/httpd/one-access.log" combined ErrorLog "/var/log/httpd/one-error.log" <Directory "/var/www/html/one"> AllowOverride none Order Allow,Deny Allow from all </Directory> </VirtualHost> |
6. Tambahkan Protokol HTTP/2
Tambahkan baris berikut di dalam bagian <VirtualHost> untuk mengaktifkan HTTP 2:
1 |
protocols h2 http/1.1 |
7. Simpan dan Tutup File
Simpan perubahan yang telah kamu buat, kemudian tutup file konfigurasi tersebut.
8. Restart Layanan Apache
Restart layanan Apache untuk menerapkan perubahan:
1 |
sudo service apache2 restart |
Jika kamu telah mengikuti semua langkah dengan benar, HTTP 2 akan mulai berfungsi pada server kamu. Dengan demikian, kamu dapat menikmati berbagai kelebihan yang ditawarkan oleh protokol HTTP 2, seperti pengiriman data yang lebih cepat dan efisien.
Baca Juga : Panduan Mengarahkan / Redirect HTTP ke HTTPS