2011-07-03 29 views
2

Greeringsすべて圧縮データとJavaScriptで解凍

ジャバスクリプト(クライアント)を使用してデータを解凍後、PHP(サーバー)から送信されたデータを圧縮してする方法はありますか?

はいあなた

+3

レスポンスを 'gzip 'して、ブラウザがHTTPプロトコルレベルで動作するように解凍させることができます。または、JSで圧縮解除する特定の理由はありますか?あなたは自分でロジックを実装しなければなりません(または、もちろんサードパーティライブラリを見つけることもできます)。 –

答えて

2

に感謝。 JSONのような正常な形式でGZIP圧縮を使用して送信しているデータを提供するようにサーバーを構成すると、JavaScriptでAjax呼び出しを行うだけでブラウザによって自動的に解凍されます。

これを設定するには、these lines.htaccessファイルにコピーします。 (私はあなたがPHPを提供するための最も一般的なプラットフォームであるため、Apacheを使用していると仮定します)。

+0

これはphpで両方の圧縮と解凍と同じです。すべてのAjax呼び出しがPHPを実行するだけです。 –

+2

これはPHPで両方の圧縮と解凍と同じですか?解凍はクライアント側で行われます---ブラウザではなく、JavaScriptで行われますが、確かにPHPでは行われません。 – Domenic

+0

ブラウザは、サーバにphp関数(またはasp/jsp多分)を呼び出すように要求します。 AJAXの呼び出しは、クライアント側でjavascriptで開始されますが、サーバー側でのみ終了します。 –

3

ここで@ Domenicの回答に同意する必要があります。 @Nishchay Sharmaは道を離れています。

私が追加する唯一のことは、すべてを圧縮するようにサーバー全体を構成するのではなく、スクリプト単位で行う場合です。PHPのgzencode()関数を使用して目標を達成するのは簡単ですヘッダコール:例えば

http://www.php.net/manual/en/function.gzencode.php

、あなたがPHPページにAjax呼び出しを介してデータの巨大なセットを取得しているとしましょう。あなたは次のようにgzencodeを使用するためにPHPのページを設定できます。

<?php 
$someBigString = gzencode('blahblah...blah'); 

header("Content-type: text/javascript"); 
header('Content-Encoding: gzip'); 

echo $someBigString; 
?> 

(これはもちろん、過度に単純化しているが、私はそれをシンプルに保つことだ)

あなたのJS Ajax呼び出しがダウンしてデータを引っ張ってきますgzipヘッダーを見て、それを自動的に解凍してください。私は個人的に、圧縮されていないとサイズが数メガバイトになる可能性がある、非常に大きなGoogle Mapsの地理座標データセットに対してこの手法を使用しています。それは容易ではありませんでした!

+0

ありがとうたくさんの日を保存するかもしれない:) –

関連する問題