Domanda

Ho scritto un server CSS che fa minimizzazione e di base di sostituzione parsing / var. Il server utilizza node.js.

Sono voler gzip mia risposta da questo server. Come detto in IRC, node.js attualmente non hanno un lib gzip, quindi sto cercando di farlo manualmente dalla riga di comando (come sto solo gzipping quando non in cache).

sto spingendo i dati del file in un file temporaneo e quindi utilizzando exec per chiamare 'gzip -c -9 -q ' + tempFile. Ottengo i dati compressi di nuovo in modo corretto (a quanto pare), e inviare l'intestazione Content-Encoding corretta come 'gzip', ma Chrome rapporti:

Error 330 (net::ERR_CONTENT_DECODING_FAILED): Unknown error.

Inoltre, alcuni tester gzip indipendenti in linea falliscono così (non solo Chrome).

Sto assumendo questa è una cosa semplice, non so sulla generazione di blocchi gzip per i browser, visto che non ho mai provato a farlo manualmente.

Qualsiasi aiuto sarebbe utile. Il server è velocissimo, ma ho bisogno di gzip il contenuto per ottenere le migliori prestazioni per gli utenti finali.

Grazie.

Aggiorna Ho verificato il mio Content-Length è corretto

È stato utile?

Soluzione

Avete aggiornato il Content-Length in base al formato gzip? Sembra che potrebbe rovinare la decodifica.

Altri suggerimenti

Il nodo è ancora sanguinando bordo e non sembra ancora avere un buon trattamento dei dati binari.

codifiche stringa del nodo sono ASCII, binario e utf8. [...] "binario" guardare solo [s] i primi 8 bit della 16bit JavaScript stringa di caratteri. Il problema è che le stringhe secondo ECMA sono stringhe di caratteri a 16 bit. Se si utilizza UTF-8 (che è il default) v'è una certa normalizzazione quando si legge nella stringa, e questo corrompe gzip. Se si utilizza ASCII, che ovviamente non funziona.

Si lavorerà se si utilizza codifica binaria sia di lettura e scrittura . La parte superiore 8 bit di un carattere della stringa JavaScript semplicemente non vengono utilizzati. In caso contrario, provare a inviare i file direttamente cliente senza alcun carico in stringhe Javascript, magari con l'aiuto di un server proxy di fronte al nodo.

Mi auguro che il motore V8 di Google implementa un vero e proprio binario tipo di dati stringa, qualcosa di simile a questa proposta http://groups.google.com/group/nodejs/browse_thread/thread/648a0f5ed2c95211/ef89acfe538931a1?lnk=gst&q=binary+type#ef89acfe538931a1

CommonJS propone inoltre binario / B , e dal momento che il nodo cerca di seguire CommonJS, c'è qualche speranza per il futuro.

Modifica Ho appena scoperto il net2 ramo di nodo che contiene un buffer binario (vedi src / node_buffer.h). Fa parte di una revisione completa della rete che sembra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top