2013-10-23 17 views
15

私はデータベースにクエリするために多くのajax呼び出しを使用しており、大きなテキスト(json)応答を取得します。私はレスポンスを圧縮したいと思います。JSONレスポンスを圧縮する方法

JavaScript implementation of Gzipにjavascriptを使用してテキストを圧縮する素晴らしい方法があります。

問題は、私のaspxサーバーでレスポンスを圧縮し、javascriptで圧縮解除したいという問題です。したがって、私はasp.netサーバー上でlzw_encode関数を実行する必要があります。私はその関数をC#に変換すべきか、別の方法がありますか?あなたが持つサーバー上でコードを圧縮することができますIISまたは変更ヘッダーを設定したいいけない場合は、上記のリンクを使用して

C#

public static string Compress(string s) 
    { 
     var dict = new Dictionary<string, int>(); 
     char[] data = s.ToArray(); 
     var output = new List<char>(); 
     char currChar; 
     string phrase = data[0].ToString(); 
     int code = 256; 

     for (var i = 1; i < data.Length; i++){ 
      currChar = data[i]; 
      var temp = phrase + currChar; 
      if (dict.ContainsKey(temp))     
       phrase += currChar;     
      else 
      { 
       if (phrase.Length > 1)      
        output.Add((char)dict[phrase]);      
       else      
        output.Add((char)phrase[0]);      
       dict[phrase + currChar] = code; 
       code++; 
       phrase = currChar.ToString(); 
      } 
     } 

     if (phrase.Length > 1)    
      output.Add((char)dict[phrase]);    
     else    
      output.Add((char)phrase[0]); 

     return new string(output.ToArray()); 
    } 

とブラウザ上で、あなたがそれを解凍することができます

javascriptの

サーバー側の応答オブジェクト内210
+8

JSON(およびその他の)応答を圧縮する最も簡単な方法は、WebサーバーがHTTP圧縮を使用していることを確認することです。 http://ja.wikipedia.org/wiki/HTTP_compressionご質問で参照するリンクでは、JavaScriptを使用してデータを圧縮するため、サーバーに保存する際に必要な記憶領域が少なくて済みます。 –

+0

これはおそらくより洗練されたソリューションです。私はそれを試してみてください感謝! –

+0

@TonoNam - あなたの実際の問題に合わせて質問を変更しました。自由に編集/編集することができます。 –

答えて

36

このように、gzipのようヘッダを追加します。

また
Response.AddHeader("Content-Encoding", "gzip"); 

、あなたはこのように、あなたのコンテンツを圧縮するGZipStreamクラスを使用することができます。

Response.Filter = new GZipStream(Response.Filter, 
           CompressionMode.Compress); 
+0

これは** SUPER **有用です、私はこれを+100をもう1つ与えることができたらいいと思います。 –

+0

JsonResultメソッドを使用すると、私は使用できます:return Json(players、JsonRequestBehavior.AllowGet); – VAAA

+1

Karl私は 'Response.AddHeader'を@VAAAと同じように使用して、' return Json'がデータを送信しようとしたときの詳細を知りたい場合 –

関連する問題