Estou errado em descobrir que o Node.js não faz compactação gzip e não há módulos disponíveis para realizar a compactação gzip? Como alguém pode usar um servidor web sem compressão? O que estou perdendo aqui? Devo tentar - suspiro - portar o algoritmo para JavaScript para uso do lado do servidor?
compression
gzip
node.js
SnickersAreMyFave
fonte
fonte
Se você estiver usando o Express , poderá usar o método de compactação como parte da configuração:
E você pode encontrar mais sobre compactação aqui: http://expressjs.com/api.html#compress
E se você não está usando o Express ... Por que não, cara ?! :)
NOTA: (graças a @ankitjaininfo) Este middleware deve ser um dos primeiros que você "usa" para garantir que todas as respostas sejam compactadas. Certifique-se de que está acima de suas rotas e manipulador estático (por exemplo, como eu tenho acima).
NOTA: (obrigado a @ciro-costa) Desde o express 4.0, o
express.compress
middleware está obsoleto. Ele foi herdado do Connect 3.0 e o Express não inclui mais o Connect 3.0. Verifique o Express Compression para obter o middleware.fonte
This middleware should be placed "high" within the stack to ensure all responses may be compressed.
Certifique-se de que está acima de suas rotas e gerenciador estáticoexpress.compress
middleware (que foi herdado do connect 3.0 <) está obsoleto (desde o express 4.0), pois não inclui mais o connect 3.0 <. Verifique github.com/expressjs/compression para obter o middleware.1- Instale a compressão
2- Use
compressão no Github
fonte
De modo geral, para um aplicativo da web de produção, você desejará colocar seu aplicativo node.js atrás de um proxy reverso leve, como nginx ou lighttpd. Entre os muitos benefícios dessa configuração, você pode configurar o proxy reverso para fazer compactação http ou até mesmo tls, sem ter que alterar o código-fonte do aplicativo.
fonte
Embora você possa gzip usando um proxy reverso, como nginx, lighttpd ou em verniz. Pode ser benéfico ter a maioria das otimizações de http, como gzipar no nível do aplicativo, para que você possa ter uma abordagem mais granular sobre quais ativos fazer gzip.
Na verdade, criei meu próprio módulo gzip para expressjs / connect, chamado gzippo https://github.com/tomgco/gzippo, embora seja novo, ele faz o trabalho. Além disso, ele usa o node-compress em vez de gerar o comando unix gzip.
fonte
Mesmo se você não estiver usando express, você ainda pode usar seu middleware. O módulo de compressão é o que estou usando:
fonte
Enquanto outros já apontaram o uso de um servidor da web front-end que
nginx
possa lidar com isso implicitamente, outra opção é usar o excelente node-http-proxy do nodejitsu para servir seus ativos.por exemplo:
Este exemplo demonstra o suporte para a compressão gzip através do uso de middleware de conexão do módulo:
connect-gzip
.fonte
Para compactar o arquivo, você pode usar o código abaixo
Para descompactar o mesmo arquivo, você pode usar o código abaixo
fonte
Que tal isso ?
fonte
Existem vários middlewares Gzip para Express, KOA e outros. Por exemplo: https://www.npmjs.com/package/express-static-gzip
No entanto, o Node é terrivelmente ruim em fazer tarefas intensivas de CPU, como gzip, terminação de SSL, etc. Em vez disso, use um serviço de middleware 'real' como nginx ou HAproxy, consulte o marcador 3 aqui: http://goldbergyoni.com/checklist-best- prática-de-nó-js-em-produção /
fonte
A partir de hoje,
epxress.compress()
parece estar fazendo um trabalho brilhante nisso.Em qualquer aplicativo expresso, basta ligar
this.use(express.compress());
.Estou dirigindo a locomotiva em cima do expresso pessoalmente e isso está funcionando perfeitamente. Não posso falar com nenhuma outra biblioteca ou estrutura construída sobre o Express, mas contanto que respeitem a transparência total da pilha, você não terá problemas.
fonte
Já se passaram alguns dias bons com o node, e você está certo em dizer que não pode criar um servidor web sem gzip.
Existem várias opções fornecidas na página de módulos no Wiki do Node.js. Eu tentei a maioria deles, mas este é o que finalmente estou usando -
https://github.com/donnerjack13589/node.gzip
v1.0 também foi lançado e tem estado bastante estável até agora.
fonte
Use compressão gzip
A compactação Gzip pode diminuir muito o tamanho do corpo da resposta e, portanto, aumentar a velocidade de um aplicativo da web. Use o middleware de compactação para compactação gzip em seu aplicativo Express. Por exemplo:
fonte