


Parlons de la façon d'utiliser le module zlib intégré de Node pour la compression gzip
Comment effectuer une compression gzip dans Node ? L'article suivant présente comment le module intégré zlib de Node effectue la compression gzip. J'espère qu'il sera utile à tout le monde !
Tout développement côté serveur est indispensable pour les opérations d'optimisation des performances. Lors de l'utilisation de l'interface HTTP (API) pour le transfert de données en front et back end, si la quantité de données transférées est trop importante, cela entraînera inévitablement le demande d'expiration ou d'échec.
nodejs
nous fournit un module intégré zlib
, et nous pouvons utiliser sa méthode gzip
pour compresser les données transmises, améliorant ainsi les données efficacité du transfert. [Recommandations de didacticiel associées : nodejs
为我们提供了一个zlib
内置模块,我们可以使用它其中的gzip
方法来对传递的数据进行压缩,从而提高数据传递效率。【相关教程推荐:nodejs视频教程】
什么是gzip?
HTTP
协议上的GZIP
编码是一种用来改进WEB应用程序性能的技术
这一般是指服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来,一般对纯文本内容可压缩到原大小的40%
这样传输就快了,效果就是你点击网址后数据会很快的显示出来,提高用户体验,当然这也会增加服务器的负载.,一般服务器中都安装有这个功能模块
减少文件大小有两个明显的好处:
- 一是可以减少存储空间
- 二是通过网络传输文件时,可以减少传输的时间
我们在进行本地数据传递时,如果一个文件太大我们经常会使用到文件压缩技术(zip或rar等),将大文件压缩成小文件进行传递,接收者再进行解压即可,因为压缩的速度一般是比较快的,这样就能减少文件传输过程中的时间,从而提高效率
简单来说,gzip
其实就是一种用于服务端(后端)和客户端(前端)之间压缩数据的一种方法
gzip和zlib什么关系?
zlib
是DEFLATE
算法的实现库,它的API同时支持gzip
文件格式以及一个简化的数据流格式
DEFLATE
是同时使用了LZ77算法
与哈夫曼编码(Huffman Coding)
的一个无损数据压缩算法
gzip
在HTTP
压缩,一种在万维网中加速传输HTML
和其他内容的技术
所以可以说zlib
是在gzip
的基础上增加了一些内容,这也是为什么node
中gzip
方法是在zlib
内置模块中的原因
普通数据传输
我们使用node
搭建一个服务器,来演示我们传递数据的普通方式:
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("服务器启动啦!"); });
这是一个简单的node
服务器,浏览器访问它后,它会向我们返回一个index.html
,这个index.html
里的内容大家随便写,写的越多越好
这里也使用到了上一节我们讲过的内置模块fs
中的stream
流,需要注意的是,在node
服务器中的res
参数本质是一个可写流,所以我们才能直接将res
用于pipe
管道中
如果你对
node
搭建服务器或者内置模块fs
的stream
流不太了解的话,可以看我先前的文章:Node.js | 搭建后端服务器(含内置模块 http | url | querystring 的使用)Node.js | 操作本地文件 — 玩转 fs 内置模块
运行server.js
文件,使用浏览器访问node
服务器:
可以看到我这里传递的数据大小是97.6kb(这取决于你的index.html
的内容)
gzip压缩数据传输
我们使用gzip
来改造一下上面普通数据传输的例子:
server.js
Tutoriel vidéo Nodejs
Qu'est-ce que gzip ?
🎜L'encodageGZIP
sur le protocole HTTP
est une technologie utilisée pour améliorer les performances des applications WEB🎜🎜 Cela fait généralement référence à une fonction installée sur le serveur. Lorsque quelqu'un visite le site Web sur ce serveur, cette fonction sur le serveur compressera le contenu Web, puis le transmettra au navigateur de l'ordinateur visiteur pour l'afficher, généralement en clair. le contenu du texte peut être compressé à 40 % de la taille d'origine🎜🎜De cette façon, la transmission est rapide. L'effet est que les données seront affichées rapidement après avoir cliqué sur l'URL, ce qui améliore l'expérience utilisateur. . Bien sûr, cela augmentera également la charge du serveur., ce module fonctionnel est généralement installé sur le serveur. Réduire la taille du fichier présente deux avantages évidents : 🎜- Premièrement. , cela peut réduire l'espace de stockage li>
- Deuxièmement, lors du transfert de fichiers via le réseau, le temps de transfert peut être réduit
🎜Lorsque nous transférons des données locales, si un fichier est trop volumineux, nous utilisons souvent la technologie de compression de fichiers (zip ou rar, etc.) qui compresse les gros fichiers en petits fichiers pour la transmission, et le destinataire peut ensuite les décompresser, car la vitesse de compression est généralement relativement rapide. , ce qui peut réduire le temps de transfert de fichiers, améliorant ainsi l'efficacité🎜🎜Pour faire simple,
gzip
est en fait une méthode utilisée pour compresser les données entre le serveur (backend) et le client (frontend) Méthode 🎜Quelle est la relation entre gzip et zlib ?
🎜zlib
est la bibliothèque d'implémentation de l'algorithme DEFLATE
, et son API prend également en charge gzipLe format de fichier et un format simplifié de <strong>flux de données</strong> 🎜<blockquote>🎜<code>DEFLATE
utilise à la fois l'algorithme LZ77
et le Huffman A <strong>Algorithme de compression de données sans perte</strong> de Huffman Coding
🎜🎜gzip
en compression HTTP
, une Technologie qui accélère la transmission des HTML
et autres contenus du World Wide Web🎜🎜On peut donc dire que zlib
ajoute du contenu basé sur gzip
, qui est également le raison pour laquelle la méthode gzip
dans node
se trouve dans le module intégré de zlib
🎜
Transfert de données commun h2>🎜Nous utilisons node
pour construire un serveur afin de démontrer la manière courante dont nous transférons les données : 🎜🎜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("服务器启动啦!");
});
Copier après la connexionCopier après la connexion🎜C'est un simple node
Serveur, une fois que le navigateur y aura accédé, il nous renverra un index.html
Vous pouvez écrire le contenu dans ce index.html
comme vous le souhaitez. . Plus vous écrivez, plus Plus c'est, mieux c'est🎜🎜Le flux stream
dans le module intégré fs
dont nous avons parlé dans la section précédente est également utilisé ici. Il convient de noter que Le paramètre res
dans le serveur node
est essentiellement un flux inscriptible, nous pouvons donc utiliser directement res code> pour <code>pipe
Dans le pipeline🎜🎜Si vous ne savez pas grand chose sur node
la construction d'un serveur ou sur le flux stream
de le module intégré fs
, vous pouvez me lire Article précédent : Node.js | Après la construction du serveur final (y compris l'utilisation du module intégré http | url | querystring)🎜Node.js | Manipuler les fichiers locaux - jouer avec le module intégré fs🎜🎜
🎜Exécutez le server.js
et utilisez le navigateur pour accéder au serveur node
: 🎜🎜
🎜🎜Oui Voyez que la taille des données que j'ai transmise ici est 97,6 Ko (cela dépend du contenu de votre index.html
) 🎜
transmission de données compressées gzip strong>
🎜Nous utilisons gzip
pour transformer l'exemple ci-dessus de transmission de données ordinaire : 🎜🎜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("服务器启动啦!");
});
Copier après la connexionCopier après la connexion
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("服务器启动啦!"); });
node
la construction d'un serveur ou sur le flux stream
de le module intégré fs
, vous pouvez me lire Article précédent : Node.js | Après la construction du serveur final (y compris l'utilisation du module intégré http | url | querystring)🎜Node.js | Manipuler les fichiers locaux - jouer avec le module intégré fs🎜🎜
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("服务器启动啦!"); });
先引入zlib
内置模块,再使用zlib.createGzip()
获取gzip
方法,这个gzip
方法实际也是一种数据流的格式,与node
服务器中的res
参数一样,这也是pipe
管道中能直接使用gzip
的原因
我们在将数据传递给res
参数(客户端)之前,通过pipe
管道的链式调用,将gzip
加上
这样readStream
(服务端)的数据会先经过gzip
压缩,之后才会传递给res
参数(客户端)
❗️ 需要注意的是:
http
数据压缩的方式不止有gzip
,还有其它的压缩方式,只不过gzip
是最常见最常用的一种方式
所以我们服务端使用gzip
将数据压缩后传递给浏览器时,浏览器并不知道我们是使用哪种方式压缩的数据,于是就不知道该以哪种方式进行解压,所以我们需要手动明确的告诉浏览器我们使用的是gzip
,服务端加上以下响应头即可:
"Content-Encoding": "gzip", // 告诉浏览器我们是通过gzip压缩的
这样浏览器就能够正确解压我们传递的数据了,运行上面的server.js
,打开浏览器访问我们的node
服务器:
可以看到使用gzip
压缩后我这里传递的数据大小只有27.5kb(这取决于你的index.html
的内容),这与之前的97.6kb相比,数据传输速率大幅提升,这就是我们使用gzip
的意义!
结语
这篇文章讲了node
的一个非常实用的小模块zlib
,zlib
大家可能之前没听过,但gzip
应该都曾听过,gzip
是请求数据传输性能优化的一种很好的方式,看完本篇文章,相信你会对gzip
有了更深的理解
更多node相关知识,请访问:nodejs 教程!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment supprimer un nœud avec nvm : 1. Téléchargez « nvm-setup.zip » et installez-le sur le lecteur C ; 2. Configurez les variables d'environnement et vérifiez le numéro de version via la commande « nvm -v » 3. Utilisez la commande « nvm » ; install" commande Installer le nœud ; 4. Supprimez le nœud installé via la commande "nvm uninstall".

Comment gérer le téléchargement de fichiers ? L'article suivant vous expliquera comment utiliser Express pour gérer les téléchargements de fichiers dans le projet de nœud. J'espère qu'il vous sera utile !

Cet article partagera avec vous l'outil de gestion de processus de Node "pm2" et expliquera pourquoi pm2 est nécessaire, comment installer et utiliser pm2, j'espère qu'il sera utile à tout le monde !

Explication détaillée et guide d'installation pour les nœuds de pignon Cet article introduira l'écosystème de pignon en détail - nœuds PI, un rôle clé dans l'écosystème de pignon et fournir des étapes complètes pour l'installation et la configuration. Après le lancement du réseau de test de la blockchain pèse, les nœuds PI sont devenus une partie importante de nombreux pionniers participant activement aux tests, se préparant à la prochaine version du réseau principal. Si vous ne connaissez pas encore Pinetwork, veuillez vous référer à ce qu'est Picoin? Quel est le prix de l'inscription? PI Utilisation, exploitation minière et sécurité. Qu'est-ce que Pinetwork? Le projet Pinetwork a commencé en 2019 et possède sa pièce exclusive de crypto-monnaie PI. Le projet vise à en créer un que tout le monde peut participer

Comment empaqueter le fichier exécutable nodejs avec pkg ? L'article suivant vous expliquera comment utiliser pkg pour empaqueter un projet Node dans un fichier exécutable. J'espère qu'il vous sera utile !

npm node gyp a échoué car les versions de « node-gyp.js » et « Node.js » ne correspondaient pas. La solution : 1. Videz le cache du nœud via « npm cache clean -f » 2. Via « npm install - ». g n" Installez le module n ; 3. Installez la version "node v12.21.0" via la commande "n v12.21.0".

L'authentification est l'une des parties les plus importantes de toute application Web. Ce didacticiel traite des systèmes d'authentification basés sur des jetons et de leurs différences par rapport aux systèmes de connexion traditionnels. À la fin de ce didacticiel, vous verrez une démo entièrement fonctionnelle écrite en Angular et Node.js. Systèmes d'authentification traditionnels Avant de passer aux systèmes d'authentification basés sur des jetons, examinons les systèmes d'authentification traditionnels. L'utilisateur fournit son nom d'utilisateur et son mot de passe dans le formulaire de connexion et clique sur Connexion. Après avoir effectué la demande, authentifiez l'utilisateur sur le backend en interrogeant la base de données. Si la demande est valide, une session est créée à l'aide des informations utilisateur obtenues à partir de la base de données et les informations de session sont renvoyées dans l'en-tête de réponse afin que l'ID de session soit stocké dans le navigateur. Donne accès aux applications soumises à

Qu'est-ce qu'un système d'authentification unique ? Comment l'implémenter en utilisant nodejs ? L'article suivant vous présentera comment utiliser Node pour implémenter un système d'authentification unique. J'espère qu'il vous sera utile !
