1

この投稿と同様に、3MBに圧縮される大きな30MBのJSONファイルをブラウザーに送信する必要があります。(はい、はい、解凍するのは大きくて集中的ですが、たとえば、REST APIへの150の個別のAJAX呼び出しよりも、静的ファイルとして一度提供する方が良いです。ここでは、少しの先行ロード時間で問題ありません)。

また、元の投稿と同様に、静的ファイルであるため、事前に圧縮することができます(したがって、サーバーはリクエストごとに圧縮する必要はありません)。さらに、Node.js/Express.jsで静的としてマークしたサーバー上のパブリックディレクトリからサービスを提供できます。

app.use(express.static(__dirname + "/public"));

あるコメント投稿者は次のように答えました。

「JSONを事前圧縮してから、常に再圧縮する必要がないように、適切なヘッダーを使用してファイルを提供するようにApacheに指示することもできます。」

質問1: Node / Expressでこれを行うにはどうすればよいですか?つまり、ブラウザにファイルがgzip形式であることをブラウザに通知して、ブラウザが自動的に解凍するように指示しますか?

別の回答は「...しかし、ブラウザが圧縮をサポートしていることを確認してください」と述べています。これにより、別の質問が発生しますか?

質問2:「ほとんどの」最新のブラウザにはコンテンツを解凍する機能がありますか?または、解凍用のjavascriptライブラリを含めて、Ajaxを介してバイナリテキストとしてデータを取得し、ブラウザのネイティブユーティリティではなく、常に自分のコードで解凍する方がよいでしょうか。

(私の目的では、一部の古いブラウザーを除外してもかまいません。たとえば、IE6を削除しても問題ありませんが、IE9のサポートを削除しても問題ありません)

4

1 に答える 1

3

Content-Encodingヘッダーがある場合、ブラウザはサーバーの応答を自動的に解凍する必要があります。

node.jsを使用すると、すでに圧縮されたファイルにヘッダーを付けて提供できます。

Content-Encoding: gzip

IE:

res.setHeader( "Content-Encoding", "gzip" );

最新のブラウザはgzipをサポートしています。古いブラウザについては、http: //www.schroepl.net/projekte/mod_gzip/browser.htmを確認してください。

于 2012-11-02T20:17:26.523 に答える