मैं डेटाबेस से पूछताछ के लिए बहुत सारे AJAX कॉल का उपयोग कर रहा हूं और मुझे बड़े टेक्स्ट (जेसन) प्रतिक्रियाएं मिलती हैं। मैं प्रतिक्रिया को संपीड़ित करना चाहता हूं।JSON प्रतिक्रियाओं को कैसे संपीड़ित करें
JavaScript implementation of Gzip में जावास्क्रिप्ट का उपयोग कर पाठ को संपीड़ित करने का एक शानदार तरीका है।
समस्या यह है कि मैं अपने एएसपीएक्स सर्वर पर प्रतिक्रिया को संपीड़ित करना चाहता हूं और इसे जावास्क्रिप्ट के साथ डीकंप्रेस करना चाहता हूं। इसलिए मुझे अपने asp.net सर्वर पर lzw_encode
फ़ंक्शन चलाने की आवश्यकता है। क्या मैं उस समारोह को सी # में अनुवाद कर सकता हूं या कोई और तरीका है?
अगर आप न आईआईएस या बदलने के हैडर कॉन्फ़िगर करने के लिए आप के साथ सर्वर पर कोड सेक कर सकते हैं ऊपर के लिंक का उपयोग करना:
सी #
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());
}
और ब्राउज़र पर आप इसे संपीड़ित कर सकते हैं साथ:
जावास्क्रिप्ट
// Decompress an LZW-encoded string
function lzw_decode(s) {
var dict = {};
var data = (s + "").split("");
var currChar = data[0];
var oldPhrase = currChar;
var out = [currChar];
var code = 256;
var phrase;
for (var i = 1; i < data.length; i++) {
var currCode = data[i].charCodeAt(0);
if (currCode < 256) {
phrase = data[i];
}
else {
phrase = dict[currCode] ? dict[currCode] : (oldPhrase + currChar);
}
out.push(phrase);
currChar = phrase.charAt(0);
dict[code] = oldPhrase + currChar;
code++;
oldPhrase = phrase;
}
return out.join("");
}
JSON (और कोई अन्य) प्रतिक्रिया को संपीड़ित करने का सबसे आसान तरीका यह सुनिश्चित करना है कि आपका वेब सर्वर HTTP संपीड़न का उपयोग कर रहा है। http://en.wikipedia.org/wiki/HTTP_compression आपके प्रश्न में संदर्भित लिंक जावास्क्रिप्ट में डेटा संपीड़ित करने के बारे में वार्ता करता है ताकि सर्वर पर संग्रहीत होने पर यह कम संग्रहण स्थान ले ले। –
हाँ यह शायद एक अधिक सुरुचिपूर्ण समाधान है। मैं इसे धन्यवाद देने का प्रयास करूंगा! –
@ टोनोनाम - मैंने आपकी वास्तविक समस्या से मेल खाने के लिए प्रश्न बदल दिया है। वापस/संपादित करने के लिए स्वतंत्र महसूस करें। –