Node.js: la compression Gzip?
Je suis mal à la trouver Node.js ne pas de la compression gzip et il n'y a pas de modules pour effectuer la compression gzip? Comment peut-on utiliser un serveur web qui n'a pas de compression? Ce qui me manque ici? Devrais-je essayer de—gasp—port, l'algorithme JavaScript pour une utilisation côté serveur?
Vous devez vous connecter pour publier un commentaire.
Nœud v0.6.x est stable zlib module core maintenant - il y a quelques exemples sur la façon de l'utiliser côté serveur dans les docs trop.
Un exemple (tiré de la documentation):
Si vous utilisez Express, vous pouvez utiliser ses compresser méthode dans le cadre de la configuration:
Et vous pouvez en savoir plus sur compresser ici: http://expressjs.com/api.html#compress
Et si vous ne l'utilisez pas Express... Pourquoi pas, homme?! 🙂
NOTE: (merci à @ankitjaininfo) Cette middleware doit être l'un des premiers à vous "utiliser" pour assurer que toutes les réponses sont compressés. S'assurer que c'est au-dessus de vos voies et gestionnaire statique (par exemple. comment je l'ai ci-dessus).
NOTE: (merci à @ciro-costa) Depuis express 4.0, le
express.compress
middleware est obsolète. Il a été hérité de connecter 3.0 et express ne comprend plus connect 3.0. Vérifier La Compression Express pour obtenir le middleware.This middleware should be placed "high" within the stack to ensure all responses may be compressed.
S'assurer que c'est au-dessus de vos voies et gestionnaire statiqueexpress.compress
middleware (qui a été hérité de connecter 3.0<) est déconseillée (depuis express 4.0), car il ne comprend pas connecter 3.0< plus. Vérifier github.com/expressjs/compression pour obtenir le middleware.1 - Installer compression
2 - Utiliser
la compression sur Github
Une manière générale, pour une application web de production, vous voulez mettre votre node.js app derrière un léger reverse proxy comme nginx ou lighttpd. Parmi les nombreux avantages de cette configuration, vous pouvez configurer le serveur proxy inverse pour faire de la compression http, ou même tls compression, sans avoir à changer le code source de votre application.
Bien que vous pouvez gzip à l'aide d'un proxy inverse comme nginx, lighttpd ou de vernis. Il peut être utile d'avoir plus http optimisations telles que gzipping au niveau de l'application, de sorte que vous pouvez avoir beaucoup plus de précision approche sur ce que l'actif de gzip.
En fait, j'ai créé mon propre module gzip pour expressjs /connect appelé gzippo https://github.com/tomgco/gzippo bien que de nouveau, il ne faire le travail. De Plus il utilise nœud-compresser au lieu de frai de l'unix commande gzip.
Tandis que d'autres ont droit a souligné à l'aide d'une extrémité avant du serveur web tels que
nginx
pouvez gérer ce implicitement, une autre option est d'utiliser nodejitsu de l' excellent nœud-http-proxy pour servir de vos actifs.par exemple:
Cet exemple démontre son soutien pour la compression gzip grâce à l'utilisation de connectez middleware module:
connect-gzip
.Même si vous n'êtes pas à l'aide de l'express, vous pouvez toujours utiliser leur middleware. Le la compression module est ce que je suis en utilisant:
Pour compresser le fichier, vous pouvez utiliser le code ci-dessous
Pour décompresser le même fichier, vous pouvez utiliser le code ci-dessous
Comment sur cette?
Cela fait quelques bons jours avec le noeud, et vous avez raison de dire que vous ne pouvez pas créer de serveur web sans gzip.
Il ya beaucoup d'options de donnée sur la page modules sur l'Node.js Wiki. J'ai essayé la plupart d'entre eux, mais c'est le seul qui je suis enfin de l'aide -
https://github.com/donnerjack13589/node.gzip
v1.0 est également et il a été assez stable jusqu'à présent.
Il y a plusieurs Gzip middlewares pour l'Express, KOA et les autres. Par exemple:
https://www.npmjs.com/package/express-static-gzip
Cependant, le Noeud est terriblement mal à faire de la CPU intensive des tâches comme gzipping, la terminaison SSL, etc. Au lieu de cela, utiliser un "vrai" middleware services comme nginx ou HAproxy, voir le point 3 ici:
http://goldbergyoni.com/checklist-best-practice-of-node-js-in-production/
Utiliser la compression gzip
Gzip compression peut diminuer considérablement la taille du corps de la réponse et par conséquent d'augmenter la vitesse d'une application web. Utiliser la compression du middleware pour la compression gzip dans votre Express app. Par exemple:
À compter d'aujourd'hui,
epxress.compress()
semble être de faire un travail brillant de cette.Dans une application suffit d'appeler
this.use(express.compress());
.Je suis en cours d'exécution de la locomotive sur le dessus de l'exprimer personnellement et cela fonctionne à merveille. Je ne peux pas parler avec d'autres bibliothèques ou cadres construit sur le haut de l'express, mais aussi longtemps comme ils l'honneur de la pile de transparence, vous devriez être bien.