Jadual Kandungan
Apakah itu gzip?
Apakah hubungan antara gzip dan zlib?
Transmisi data biasa
结语
Rumah hujung hadapan web tutorial js Mari kita bincangkan tentang cara menggunakan modul terbina dalam Node zlib untuk pemampatan gzip

Mari kita bincangkan tentang cara menggunakan modul terbina dalam Node zlib untuk pemampatan gzip

Sep 26, 2022 pm 08:30 PM
nodejs​ node Modul terbina dalam zlib pemampatan gzip

Bagaimana untuk melaksanakan pemampatan gzip dalam Node? Artikel berikut memperkenalkan kaedah mampatan gzip modul terbina dalam Node saya harap ia akan membantu semua orang.

Mari kita bincangkan tentang cara menggunakan modul terbina dalam Node zlib untuk pemampatan gzip

Sebarang pembangunan bahagian pelayan amat diperlukan untuk operasi pengoptimuman prestasi apabila menggunakan antara muka HTTP (API) untuk pemindahan data di bahagian hadapan dan belakang, jika jumlah data dipindahkan terlalu besar, ia pasti akan menyebabkan Permintaan tamat masa atau gagal.

nodejs memberikan kami zlib modul terbina dalam, dan kami boleh menggunakan kaedah gzipnya untuk memampatkan data yang dihantar, sekali gus meningkatkan kecekapan penghantaran data. [Cadangan tutorial berkaitan: tutorial video nodejs]

Apakah itu gzip?

HTTPPengekodan GZIP pada protokol ialah teknologi yang digunakan untuk meningkatkan prestasi aplikasi WEB

Ini secara amnya merujuk kepada pemasangan dalam pelayan Apabila seseorang melawat tapak web dalam pelayan ini, fungsi dalam pelayan ini memampatkan kandungan web dan kemudian menghantarnya ke pelayar komputer yang dilawati untuk paparan Secara umumnya, kandungan teks biasa boleh dimampatkan kepada 40%. daripada saiz asal

Dengan cara ini pemindahan akan menjadi lebih cepat Kesannya ialah data akan dipaparkan dengan cepat selepas anda mengklik pada URL, sudah tentu, ini juga akan meningkatkan beban pelayan., modul fungsi ini biasanya dipasang dalam pelayan

Mengurangkan saiz fail mempunyai dua faedah yang jelas:

  • Pertama, ia boleh mengurangkan storan space
  • Kedua, apabila memindahkan fail melalui rangkaian, ia boleh mengurangkan masa penghantaran

Apabila kita memindahkan data tempatan, jika fail terlalu besar kita sering menggunakan Teknologi pemampatan fail (zip atau rar, dsb.) memampatkan fail besar menjadi fail kecil untuk penghantaran, dan penerima kemudiannya boleh menyahmampatkannya Kerana kelajuan pemampatan secara amnya agak cepat, ini boleh mengurangkan masa yang dihabiskan dalam masa proses pemindahan fail, dengan itu meningkatkan kecekapan

Ringkasnya, gzip sebenarnya adalah kaedah untuk memampatkan data antara pelayan (bahagian belakang) dan klien (bahagian hadapan)

Apakah hubungan antara gzip dan zlib?

zlib ialah DEFLATEpustaka pelaksanaan algoritma APInya menyokong kedua-dua format fail gzip dan strim data yang dipermudahkan. format

DEFLATE ialah LZ77算法 algoritma pemampatan data tanpa kehilangan yang menggunakan kedua-dua 哈夫曼编码(Huffman Coding) dan pada masa yang sama

gzip dalam HTTPMampatan, teknologi yang mempercepatkan penghantaran HTML dan kandungan lain dalam World Wide Web

Jadi boleh dikatakan bahawa zlib menambah beberapa kandungan berdasarkan gzip, itulah sebabnya node Sebab mengapa kaedah gzip berada dalam zlib modul terbina dalam

Transmisi data biasa

Kami menggunakan node untuk membina pelayan untuk menunjukkan cara kami memindahkan data Cara biasa:

server.js

const http = require("http");
const fs = require("fs");

http.createServer((req, res) => {
    res.writeHead(200, {
        "Content-Type": "text/html;charset=utf-8",
    });

    const readStream = fs.createReadStream("./index.html");
    // res本质就是一个可写流
    readStream.pipe(res);
}).listen(3000, () => {
    console.log("服务器启动啦!");
});
Salin selepas log masuk

Ini adalah pelayan node yang mudah, selepas pelayar mengaksesnya, ia akan mengembalikan index.html kepada kami, ini index.html Anda boleh menulis apa sahaja yang anda mahu, lebih banyak anda menulis, lebih baik

Aliran fs dalam modul terbina dalam stream yang kita bincangkan pada sebelumnya bahagian juga digunakan di sini Perlu diingatkan bahawa , parameter node dalam pelayan res pada dasarnya adalah aliran boleh tulis, jadi kami boleh terus menggunakan res dalam saluran paip pipe 🎜>

Jika anda berminat dengan

Jika anda tidak tahu banyak tentang membina pelayan atau aliran node modul terbina dalam fs, anda boleh membaca artikel saya sebelum ini: streamNode.js |. Membina pelayan bahagian belakang (termasuk penggunaan modul terbina dalam http | url | rentetan pertanyaan) Node.js |

Jalankan fail

dan gunakan penyemak imbas untuk mengakses pelayan server.js: node

Mari kita bincangkan tentang cara menggunakan modul terbina dalam Node zlib untuk pemampatan gzip

Anda boleh melihat bahawa saiz data yang saya lalui di sini ialah

97.6kb (ia bergantung pada kandungan anda) index.html

penghantaran data mampat gzip

Kami menggunakan

untuk mengubah contoh penghantaran data biasa di atas: gzip

server.js

const http = require("http");
const fs = require("fs");
// 导入内置模块zlib
const zlib = require("zlib");
// 获取gzip方法
const gzip = zlib.createGzip();
http.createServer((req, res) => {
    res.writeHead(200, {
        "Content-Type": "text/html;charset=utf-8",
        "Content-Encoding": "gzip", // 告诉浏览器我们是通过gzip压缩的
    });

    const readStream = fs.createReadStream("./index.html");
    // res本质就是一个可写流
    // 在数据返回之前使用gzip压缩数据
    readStream.pipe(gzip).pipe(res);
}).listen(3000, () => {
    console.log("服务器启动啦!");
});
Salin selepas log masuk

先引入zlib内置模块,再使用zlib.createGzip()获取gzip方法,这个gzip方法实际也是一种数据流的格式,与node服务器中的res参数一样,这也是pipe管道中能直接使用gzip的原因

我们在将数据传递给res参数(客户端)之前,通过pipe管道的链式调用,将gzip加上

这样readStream(服务端)的数据会先经过gzip压缩,之后才会传递给res参数(客户端)

❗️ 需要注意的是:

http数据压缩的方式不止有gzip,还有其它的压缩方式,只不过gzip是最常见最常用的一种方式

所以我们服务端使用gzip将数据压缩后传递给浏览器时,浏览器并不知道我们是使用哪种方式压缩的数据,于是就不知道该以哪种方式进行解压,所以我们需要手动明确的告诉浏览器我们使用的是gzip,服务端加上以下响应头即可:

"Content-Encoding": "gzip", // 告诉浏览器我们是通过gzip压缩的
Salin selepas log masuk

这样浏览器就能够正确解压我们传递的数据了,运行上面的server.js,打开浏览器访问我们的node服务器:

Mari kita bincangkan tentang cara menggunakan modul terbina dalam Node zlib untuk pemampatan gzip

可以看到使用gzip压缩后我这里传递的数据大小只有27.5kb(这取决于你的index.html的内容),这与之前的97.6kb相比,数据传输速率大幅提升,这就是我们使用gzip的意义!

结语

这篇文章讲了node的一个非常实用的小模块zlibzlib大家可能之前没听过,但gzip应该都曾听过,gzip是请求数据传输性能优化的一种很好的方式,看完本篇文章,相信你会对gzip有了更深的理解

更多node相关知识,请访问:nodejs 教程

Atas ialah kandungan terperinci Mari kita bincangkan tentang cara menggunakan modul terbina dalam Node zlib untuk pemampatan gzip. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk memadam nod dalam nvm Bagaimana untuk memadam nod dalam nvm Dec 29, 2022 am 10:07 AM

Cara memadam nod dengan nvm: 1. Muat turun "nvm-setup.zip" dan pasangkannya pada pemacu C 2. Konfigurasikan pembolehubah persekitaran dan semak nombor versi melalui arahan "nvm -v" 3. Gunakan "nvm arahan install" Pasang nod; 4. Padamkan nod yang dipasang melalui arahan "nvm uninstall".

Cara menggunakan ekspres untuk mengendalikan muat naik fail dalam projek nod Cara menggunakan ekspres untuk mengendalikan muat naik fail dalam projek nod Mar 28, 2023 pm 07:28 PM

Bagaimana untuk mengendalikan muat naik fail? Artikel berikut akan memperkenalkan kepada anda cara menggunakan ekspres untuk mengendalikan muat naik fail dalam projek nod saya harap ia akan membantu anda!

Analisis mendalam tentang alat pengurusan proses Node 'pm2' Analisis mendalam tentang alat pengurusan proses Node 'pm2' Apr 03, 2023 pm 06:02 PM

Artikel ini akan berkongsi dengan anda alat pengurusan proses Node "pm2", dan bercakap tentang mengapa pm2 diperlukan, cara memasang dan menggunakan pm2, saya harap ia akan membantu semua orang!

PI Node Teaching: Apakah nod pi? Bagaimana cara memasang dan menyediakan nod pi? PI Node Teaching: Apakah nod pi? Bagaimana cara memasang dan menyediakan nod pi? Mar 05, 2025 pm 05:57 PM

Penjelasan dan Panduan Pemasangan Terperinci untuk Pinetwork Nodes Artikel ini akan memperkenalkan ekosistem pinetwork secara terperinci - nod pi, peranan utama dalam ekosistem pinetwork, dan menyediakan langkah -langkah lengkap untuk pemasangan dan konfigurasi. Selepas pelancaran Rangkaian Ujian Blockchain Pinetwork, nod PI telah menjadi bahagian penting dari banyak perintis yang aktif mengambil bahagian dalam ujian, bersiap sedia untuk pelepasan rangkaian utama yang akan datang. Jika anda tidak tahu kerja pinet, sila rujuk apa itu picoin? Berapakah harga untuk penyenaraian? Penggunaan PI, perlombongan dan analisis keselamatan. Apa itu Pinetwork? Projek Pinetwork bermula pada tahun 2019 dan memiliki syiling pi cryptocurrency eksklusifnya. Projek ini bertujuan untuk mewujudkan satu yang semua orang boleh mengambil bahagian

Mari kita bincangkan tentang cara menggunakan pkg untuk membungkus projek Node.js ke dalam fail boleh laku. Mari kita bincangkan tentang cara menggunakan pkg untuk membungkus projek Node.js ke dalam fail boleh laku. Dec 02, 2022 pm 09:06 PM

Bagaimana untuk membungkus fail boleh laku nodejs dengan pkg? Artikel berikut akan memperkenalkan kepada anda cara menggunakan pkg untuk membungkus projek Node ke dalam fail boleh laku. Saya harap ia akan membantu anda!

Apa yang perlu dilakukan jika npm nod gyp gagal Apa yang perlu dilakukan jika npm nod gyp gagal Dec 29, 2022 pm 02:42 PM

npm node gyp gagal kerana versi "node-gyp.js" dan "Node.js" tidak sepadan Penyelesaiannya: 1. Kosongkan cache nod melalui "npm cache clean -f" 2. Melalui "npm install -. g n" Pasang modul n; 3. Pasang versi "nod v12.21.0" melalui arahan "n v12.21.0".

Apakah sistem log masuk tunggal? Bagaimana untuk melaksanakannya menggunakan nodejs? Apakah sistem log masuk tunggal? Bagaimana untuk melaksanakannya menggunakan nodejs? Feb 24, 2023 pm 07:33 PM

Apakah sistem log masuk tunggal? Bagaimana untuk melaksanakannya menggunakan nodejs? Artikel berikut akan memperkenalkan kepada anda cara menggunakan nod untuk melaksanakan sistem log masuk tunggal. Saya harap ia akan membantu anda!

Pengesahan berasaskan token dengan Angular dan Node Pengesahan berasaskan token dengan Angular dan Node Sep 01, 2023 pm 02:01 PM

Pengesahan adalah salah satu bahagian terpenting dalam mana-mana aplikasi web. Tutorial ini membincangkan sistem pengesahan berasaskan token dan cara ia berbeza daripada sistem log masuk tradisional. Pada penghujung tutorial ini, anda akan melihat demo berfungsi sepenuhnya yang ditulis dalam Angular dan Node.js. Sistem Pengesahan Tradisional Sebelum beralih kepada sistem pengesahan berasaskan token, mari kita lihat sistem pengesahan tradisional. Pengguna memberikan nama pengguna dan kata laluan mereka dalam borang log masuk dan klik Log Masuk. Selepas membuat permintaan, sahkan pengguna di bahagian belakang dengan menanyakan pangkalan data. Jika permintaan itu sah, sesi dibuat menggunakan maklumat pengguna yang diperoleh daripada pangkalan data dan maklumat sesi dikembalikan dalam pengepala respons supaya ID sesi disimpan dalam penyemak imbas. Menyediakan akses kepada aplikasi tertakluk kepada

See all articles