Est-ce que je me trompe en trouvant que Node.js ne fait pas de compression gzip et qu'il n'y a aucun module là-bas pour effectuer la compression gzip? Comment peut-on utiliser un serveur Web sans compression? Qu'est-ce que j'oublie ici? Dois-je essayer de porter l'algorithme vers JavaScript pour une utilisation côté serveur?
compression
gzip
node.js
SnickersAreMyFave
la source
la source
Si vous utilisez Express , vous pouvez utiliser sa méthode de compression dans le cadre de la configuration:
Et vous pouvez en trouver plus sur compress ici: http://expressjs.com/api.html#compress
Et si vous n'utilisez pas Express ... Pourquoi pas, mec?! :)
REMARQUE: (merci à @ankitjaininfo) Ce middleware devrait être l'un des premiers que vous «utilisez» pour vous assurer que toutes les réponses sont compressées. Assurez-vous que cela est au-dessus de vos routes et de votre gestionnaire statique (par exemple, comment je l'ai ci-dessus).
REMARQUE: (merci à @ ciro-costa) Depuis express 4.0, le
express.compress
middleware est obsolète. Il a été hérité de connect 3.0 et express n'inclut plus connect 3.0. Vérifiez Express Compression pour obtenir le middleware.la source
This middleware should be placed "high" within the stack to ensure all responses may be compressed.
Assurez-vous que cela est au-dessus de vos routes et de votre gestionnaire statiqueexpress.compress
middleware (hérité de connect 3.0 <) est obsolète (depuis express 4.0) car il n'inclut plus connect 3.0 <. Vérifiez github.com/expressjs/compression pour obtenir le middleware.1- Installer la compression
2- Utilisez-le
compression sur Github
la source
De manière générale, pour une application Web de production, vous souhaiterez placer votre application node.js derrière un proxy inverse léger tel que nginx ou lighttpd. Parmi les nombreux avantages de cette configuration, vous pouvez configurer le proxy inverse pour effectuer une compression http ou même une compression tls, sans avoir à changer le code source de votre application.
la source
Bien que vous puissiez gzip en utilisant un proxy inverse tel que nginx, lighttpd ou en vernis. Il peut être avantageux d'avoir la plupart des optimisations http telles que gzipping au niveau de l'application afin que vous puissiez avoir une approche beaucoup plus granulaire sur les actifs à gzip.
J'ai en fait créé mon propre module gzip pour expressjs / connect appelé gzippo https://github.com/tomgco/gzippo bien que nouveau, il fasse le travail. De plus, il utilise node-compress au lieu de générer la commande unix gzip.
la source
Même si vous n'utilisez pas express, vous pouvez toujours utiliser leur middleware. Le module de compression est ce que j'utilise:
la source
Alors que d'autres l'ont souligné à juste titre en utilisant un serveur Web frontal tel qu'il
nginx
peut gérer cela implicitement, une autre option consiste à utiliser l' excellent proxy node-http-proxy de nodejitsu de pour servir vos actifs.par exemple:
Cet exemple démontre un soutien pour la compression gzip grâce à l'utilisation du middleware de connexion Module:
connect-gzip
.la source
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
la source
Et ça ?
la source
Il existe plusieurs middlewares Gzip pour Express, KOA et autres. Par exemple: https://www.npmjs.com/package/express-static-gzip
Cependant, Node est terriblement mauvais pour effectuer des tâches gourmandes en CPU comme gzipping, terminaison SSL, etc. À la place, utilisez un `` vrai '' service middleware comme nginx ou HAproxy, voir la puce 3 ici: http://goldbergyoni.com/checklist-best- pratique-du-nœud-js-en-production /
la source
À partir d'aujourd'hui,
epxress.compress()
semble faire un travail brillant à ce sujet.Dans n'importe quelle application express, il suffit d'appeler
this.use(express.compress());
.Je dirige personnellement une locomotive sur un express et cela fonctionne à merveille. Je ne peux pas parler d'autres bibliothèques ou frameworks construits sur express, mais tant qu'ils respectent la transparence totale de la pile, tout devrait bien se passer.
la source
Cela fait quelques bons jours avec node, et vous avez raison de dire que vous ne pouvez pas créer de serveur Web sans gzip.
Il y a pas mal d'options données sur la page des modules du wiki Node.js. J'ai essayé la plupart d'entre eux, mais c'est celui que j'utilise enfin -
https://github.com/donnerjack13589/node.gzip
La v1.0 est également sortie et a été assez stable jusqu'à présent.
la source
Utiliser la compression gzip
La compression Gzip peut réduire considérablement la taille du corps de la réponse et donc augmenter la vitesse d'une application Web. Utilisez le middleware de compression pour la compression gzip dans votre application Express. Par exemple:
la source