Rumah >pembangunan bahagian belakang >tutorial php >Http/2: latar belakang, faedah prestasi dan pelaksanaan

Http/2: latar belakang, faedah prestasi dan pelaksanaan

Christopher Nolan
Christopher Nolanasal
2025-02-08 09:12:10619semak imbas

http/2: protokol rangkaian yang meningkatkan kelajuan pemuatan halaman web

HTTP/2: Background, Performance Benefits and Implementations

mata teras:

    HTTP/2 (dikeluarkan pada tahun 2015) menyelesaikan masalah latensi HTTP/1.1 pendahulunya dengan memampatkan tajuk HTTP, melaksanakan permintaan pelayan dan permintaan multiplexing pada satu sambungan. Ia juga direka untuk menyelesaikan masalah penyekatan kepala pasukan dan memerlukan penyulitan secara lalai.
  • Peralihan dari http/1.1 hingga http/2 bukan tanpa cabaran, kerana keserasian mundur diperlukan dengan laman web yang ada. Sebarang peningkatan protokol mesti dilaksanakan dengan cara yang tidak mengganggu Internet.
  • Semua pelayar arus perdana kini menyokong HTTP/2, bagaimanapun, mereka memerlukan semua permintaan HTTP/2 mesti disulitkan, yang bukan keperluan spesifikasi HTTP/2 itu sendiri.
  • Melaksanakan HTTP/2 pada pelayan biasanya melibatkan menaik taraf perisian pelayan atau persekitaran hosting ke versi yang menyokong HTTP/2 dan mengkonfigurasi pelayan untuk membolehkan fungsi HTTP/2. Harus diingat bahawa HTTP/2 memerlukan sijil SSL, jadi Laman Web perlu menyediakan perkhidmatan melalui HTTPS.

Evolusi protokol http:

Infrastruktur Internet -atau lapisan rangkaian fizikal -adalah protokol internet (sebagai sebahagian daripada TCP/IP atau lapisan pengangkutan). Ia adalah infrastruktur untuk kebanyakan komunikasi internet kami.

di atasnya adalah lapisan aplikasi, dan pelbagai aplikasi menggunakan protokol yang berbeza untuk menyambung dan menghantar maklumat. Sebagai contoh, kami mempunyai SMTP, POP3 dan IMAP untuk menghantar dan menerima e -mel;

Protokol yang paling terkenal, yang juga sinonim dengan Internet, adalah HTTP (protokol pemindahan hiperteks). Kami menggunakannya setiap hari untuk melawat laman web. Ia direka oleh Tim Berners Lee di CERN seawal tahun 1989. Spesifikasi untuk versi 1.0 dikeluarkan pada tahun 1996 (RFC 1945), dan versi 1.1 dikeluarkan pada tahun 1999.

Spesifikasi HTTP dikekalkan oleh Perikatan World Wide Web dan boleh didapati di https://www.w3.org/standards/techs/http.

Generasi pertama protokol HTTP (Versi 1.0 dan 1.1) menguasai Internet sehingga 2015, selepas pembebasan HTTP/2, industri (pelayan web dan vendor pelayar) mula mengadopsinya.

Batasan http/1.1:

pemindahan biasanya dimulakan oleh klien (penyemak imbas pengguna), dan pelayan biasanya hanya bertindak balas terhadap permintaan ini.

Ia boleh dikatakan bahawa keadaan HTTP semasa agak "kekok", atau agak rendah, yang memerlukan banyak "bantuan" kepada pelayar dan pelayan untuk menggambarkan cara berkomunikasi dengan berkesan. Membuat perubahan di kawasan ini tidak mudah, kerana banyak laman web yang ada bergantung pada keserasian mundur dengan sebarang perubahan yang diperkenalkan. Mana -mana operasi yang direka untuk meningkatkan protokol mesti dilakukan dengan cara yang lancar tanpa mengganggu Internet.

Dalam banyak cara, model permintaan yang ketat, atom, penyegerakan ini telah menjadi kesesakan, dan kemajuan telah mengambil bentuk penggodaman, biasanya diketuai oleh pemimpin industri seperti Google dan Facebook. Keadaan biasa (yang sedang diperbaiki dalam pelbagai cara) adalah apabila pelawat meminta laman web, dan apabila penyemak imbas mereka menerimanya dari pelayan, ia mengasingkan HTML dan mencari sumber lain yang diperlukan untuk menjadikan halaman, seperti CSS, imej, dan JavaScript. Apabila ia menemui pautan sumber ini, ia berhenti memuatkan semua kandungan lain dan meminta sumber yang ditentukan dari pelayan. Ia tidak akan bergerak sehingga ia diterima. Ia kemudian meminta sumber lain, dan sebagainya.

HTTP/2: Background, Performance Benefits and Implementations Bilangan permintaan yang diperlukan untuk memuatkan laman web teratas di dunia biasanya beratus -ratus.

Ini termasuk banyak masa menunggu, serta banyak masa perjalanan, di mana pelawat hanya dapat melihat skrin putih atau laman web separa yang diberikan. Ini semua beberapa saat sia -sia. Semasa kitaran permintaan ini, sejumlah besar jalur lebar yang tersedia hanya terbiar dan tidak digunakan.

CDN boleh mengurangkan banyak masalah ini, tetapi mereka juga hanya penyelesaian sementara.

Sebagai Daniel Stenberg dari Mozilla (salah satu daripada orang yang terlibat dalam standardisasi HTTP/2), versi pertama protokol ini mengalami kesukaran untuk memanfaatkan sepenuhnya kapasiti lapisan pengangkutan TCP yang mendasari. Pengguna yang telah berusaha mengoptimumkan kelajuan pemuatan laman web tahu bahawa ini biasanya memerlukan beberapa kreativiti, untuk meletakkannya secara euphemistically.

dari masa ke masa, kelajuan jalur lebar Internet telah meningkat dengan ketara, tetapi infrastruktur dalam era HTTP/1.1 tidak mengambil kesempatan sepenuhnya. Ia masih berjuang untuk menangani isu -isu seperti saluran paip HTTP -menimbulkan lebih banyak sumber melalui sambungan TCP yang sama -dan sebagainya. Pelanggan dalam penyemak imbas menyokong yang paling seret, Firefox dan Chrome melumpuhkannya secara lalai, atau ia tidak disokong sama sekali, seperti IE, versi Firefox 54, dll. Ini bermakna walaupun sumber kecil perlu membuka sambungan TCP baru, dan semua kembung yang berikut - jabat tangan TCP, carian DNS, kelewatan ... disebabkan oleh ketua pasukan yang menyekat, pemuatan sumber akan menyebabkan menyekat semua Memuatkan sumber lain.

HTTP/2: Background, Performance Benefits and Implementations Menyegerakkan perbandingan sambungan bukan saluran ke sambungan saluran paip, menunjukkan kemungkinan penjimatan masa beban.

Di bawah model HTTP/1, beberapa teknik pengoptimuman yang mesti digunakan oleh pemaju web untuk mengoptimumkan laman web mereka termasuk penyihir imej, CSS dan sambungan JavaScript, sharding (mengedarkan permintaan sumber pengunjung ke pelbagai domain atau subdomain).

Penambahbaikan diperlukan, ia mesti menangani isu -isu ini dengan cara yang serasi dan lancar untuk mengelakkan mengganggu kerja di web yang sedia ada.

spdy dan http/2:

Pada tahun 2009, Google mengumumkan satu projek yang akan menjadi cadangan draf untuk SPDY Protokol Generasi Seterusnya (disebut Speedy ), menambah sokongan untuk Chrome dan menolaknya ke arahnya dalam beberapa tahun akan datang perkhidmatan. Seterusnya, pengeluar Twitter dan pelayan seperti Apache dan Nginx juga menyediakan sokongan, Node.js, dan kemudian Facebook, WordPress.com dan kebanyakan penyedia CDN.

Spdy memperkenalkan multiplexing -menamatkan pelbagai sumber selari melalui satu sambungan TCP. Sambungan disulitkan secara lalai dan data dimampatkan. Pertama, ujian awal dari 25 laman web pertama dalam kertas putih SPDY menunjukkan bahawa kelajuan meningkat lebih daripada 27% kepada lebih daripada 60%.

Selepas membuktikan keberkesanannya dalam persekitaran pengeluaran, SPDY versi 3 menjadi asas bagi draf pertama HTTP/2 yang dibangunkan oleh HTTPBIS, kumpulan kerja protokol pemindahan hiperteks pada tahun 2015.

    Compress header http
  • Melaksanakan Push Server
  • Permintaan multiplexing pada satu sambungan
Ia juga direka untuk menyelesaikan masalah penyekatan kepala. Data yang dihantar dalam format binari, meningkatkan kecekapan dan memerlukan penyulitan secara lalai (atau sekurang -kurangnya, ini adalah keperluan yang dikenakan oleh pelayar arus perdana).

Mampatan kepala dilakukan menggunakan algoritma HPACK, yang menyelesaikan kelemahan dalam SPDY dan mengurangkan saiz permintaan web pada separuh.

Push Server adalah salah satu ciri yang direka untuk menyelesaikan masa menunggu yang sia -sia, menyediakan sumber kepada pelayan pelayar sebelum permintaan penyemak imbas. Ini mengurangkan masa perjalanan, yang merupakan kesesakan utama dalam pengoptimuman laman web.

Oleh kerana semua penambahbaikan ini, perbezaan masa beban yang dibawa oleh HTTP/2 dapat dilihat pada halaman contoh ImageKit.io.

Lebih banyak penjimatan dalam masa pemuatan, semakin jelas sumber laman web.

bagaimana untuk melihat sama ada laman web menyediakan sumber melalui http/2:

Dalam pelayar arus perdana seperti Firefox atau Chrome, kami boleh menyemak sokongan laman web untuk protokol HTTP/2 dalam alat Inspektor dengan membuka tab "Rangkaian" dan mengklik kanan jalur di atas senarai sumber. Di sini kita boleh mengaktifkan item "Protokol".

HTTP/2: Background, Performance Benefits and Implementations

Pelaksanaan sampingan pelayan:

Sehubungan dengan penulisan ini, semua pelayar arus perdana menyokong HTTP/2, walaupun semua permintaan HTTP/2 diperlukan, dan spesifikasi HTTP/2 itu sendiri tidak memerlukan penyulitan.

Server

Apache 2.4 menyokongnya melalui modul Mod_HTTP2, yang kini perlu siap untuk pengeluaran. Apache perlu membinanya dengan menambahkan parameter-yang boleh dipertanggungjawabkan kepada arahan ./configure. Kami juga perlu memastikan bahawa sekurang -kurangnya versi 1.2.1 Perpustakaan Libnghttp2 dipasang. Jika sistem mempunyai masalah mencarinya, kami dapat memberikan jalan ke ./configure dengan menambah --with-nghttp2 =

.

Langkah seterusnya ialah memuatkan modul dengan menambahkan arahan kepada konfigurasi Apache:

<code>LoadModule http2_module modules/mod_http2.so</code>

Kemudian kami menambah protokol H2 H2C HTTP/1.1 ke blok hos maya kami dan memuatkan semula pelayan. Dokumentasi Apache memberi amaran kepada kami tentang langkah berjaga -jaga ketika membolehkan http/2:

Membolehkan HTTP/2 pada pelayan Apache anda akan mempengaruhi penggunaan sumber, dan jika anda mempunyai laman web yang sibuk, anda mungkin ingin mempertimbangkan dengan teliti kesannya.

Apabila http/2 diaktifkan, perkara pertama yang perlu diperhatikan ialah proses pelayan anda akan memulakan benang tambahan. Sebabnya ialah HTTP/2 tangan semua permintaan yang diterima untuk benang pekerja sendiri untuk diproses, mengumpul hasil dan mengalirkannya kepada pelanggan.

Anda boleh membaca lebih lanjut mengenai konfigurasi Apache di sini.

nginx telah menyokong http/2 sejak versi 1.9.5, kita boleh mengaktifkannya dengan hanya menambahkan parameter http2 kepada spesifikasi tuan rumah maya kami:

<code>server {
    listen 443 ssl http2 default_server;

    ssl_certificate    server.crt;
    ssl_certificate_key server.key;</code>

kemudian muat semula nginx.

Malangnya, seperti penulisan ini, push pelayan belum dilaksanakan secara rasmi, tetapi ia telah ditambah ke pelan hala tuju pembangunan dan dijadualkan akan dikeluarkan tahun depan. Bagi orang yang lebih mencabar, terdapat modul Nginx yang tidak rasmi yang menambah sokongan untuk push pelayan HTTP/2.

Litespeed dan OpenLitespeed juga membanggakan untuk menyokong HTTP/2.

Nota Sebelum mengaktifkan HTTP/2 di sisi pelayan adalah untuk memastikan kami mempunyai sokongan SSL. Ini bermakna semua coretan kod hos maya yang kami sebutkan di atas - untuk Apache dan Nginx - perlu memasukkan versi SSL blok hos maya dan mendengar port 443. Sebaik sahaja kami mempunyai Apache atau Nginx yang dipasang, dan kami telah mengkonfigurasi hos maya biasa, mendapatkan sijil SSL LetsEncrypt dan memasangnya pada mana -mana taburan utama Linux harus menjadi masalah hanya beberapa baris kod. Certbot adalah alat baris arahan yang mengautomasikan keseluruhan proses.

Ringkasan:

Dalam artikel ini, saya secara ringkas menggariskan HTTP/2, spesifikasi protokol web generasi kedua yang muncul.

Senarai lengkap pelaksanaan generasi baru HTTP boleh didapati di sini.

Bagi mereka yang tidak tahu banyak tentang teknologi, jalan pintas untuk beralih ke protokol baru ini mungkin hanya melaksanakan CDN dalam timbunan web, kerana CDN adalah salah satu vendor pertama yang mengadopsi HTTP/2.

http/2 FAQ:

(bahagian FAQ ditinggalkan di sini kerana ia sangat diduplikasi dengan output sebelumnya)

Atas ialah kandungan terperinci Http/2: latar belakang, faedah prestasi dan pelaksanaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn