Javascript を含む Web ページを開発しています。この js は、フラット ファイルに格納されている静的な文字列データ (約 1 ~ 2 MB) を使用します。転送負荷を軽減するために、gzip またはその他のアルゴリズムで圧縮できます。
このバイナリ ファイルを Ajax で取得し、クライアント ブラウザーで文字列 (後で分割できます) に解凍することは可能でしょうか。はいの場合、どうすればこれを達成できますか? 誰かがコード例を持っていますか?
Javascript を含む Web ページを開発しています。この js は、フラット ファイルに格納されている静的な文字列データ (約 1 ~ 2 MB) を使用します。転送負荷を軽減するために、gzip またはその他のアルゴリズムで圧縮できます。
このバイナリ ファイルを Ajax で取得し、クライアント ブラウザーで文字列 (後で分割できます) に解凍することは可能でしょうか。はいの場合、どうすればこれを達成できますか? 誰かがコード例を持っていますか?
また、別のライブラリまたはサイトはこれです。例はほとんどありませんが、見ることができる完全なテスト ケースがいくつかあります。
https://github.com/imaya/zlib.js
複雑なテストケースの一部を次に示し ます https://github.com/imaya/zlib.js/blob/master/test/browser-test.js https://github.com/imaya/zlib.js/blob/master /test/browser-plain-test.js
コード例は非常にコンパクトに見えます。この2行のコードだけ...
// compressed = Array.<number> or Uint8Array
var gunzip = new Zlib.Gunzip(compressed);
var plain = gunzip.decompress();
ここhttps://github.com/imaya/zlib.js/blob/master/bin/gunzip.min.jsを見ると、含める必要があるパックされた js ファイルがあることがわかります。https://github.com/imaya/zlib.js/blob/master/binに他の 1 つまたは 2 つを含める必要がある場合があります。
いずれにせよ、これらのファイルをページに取得し、GUnzip オブジェクトにサーバーから事前に gzip されたデータをフィードすると、期待どおりになります。
データをダウンロードし、他の関数を使用して配列に入れる必要があります。そのサポートは含まれていないと思います。
function load_binary_resource(url) {
var req = new XMLHttpRequest();
req.open('GET', url, false);
req.overrideMimeType('text\/plain; charset=x-user-defined');
req.send(null);
if (req.status != 200) return '';
return req.responseText;
}
// Each byte is now encoded in a 2 byte string character. Just AND it with 0xFF to get the actual byte and then feed that to GUnzip...
var filestream = load_binary_resource(url);
var abyte = filestream.charCodeAt(x) & 0xff; // throw away high-order byte (f7)
===================================== Node.jsもあります
質問は 、Node.js クロスプラットフォームでファイルをダウンロードして解凍する最も簡単な方法に似ていますか?
nodejs ドキュメントにこのサンプル コードがあります。それがどれだけ具体的になるかはわかりません... http://nodejs.org/api/zlib.html
Apache で Gzip 圧縮を有効にするだけで、すべてが自動的に実行されます。
おそらく、文字列を .js ファイルに json として保存し、js MIME タイプの gzip を有効にする必要があります。
大規模なデータベース (ローカル ストレージの制限により必要) を使用するオフライン JS アプリにjs-deflateを使用し、完全に機能したことを覚えています。js-base64に依存します。