मैं एक प्रश्न है कि इस प्रकार (सी #) सरल OData ग्राहक पुस्तकालय के साथ एक सीआरएम गतिशीलता से जानकारी ले कर प्रदर्शन करने के लिए कोशिश कर रहा हूँ:सरल ओडाटा क्लाइंट में gzip संपीड़न कैसे सक्षम करें?
var settings = new ODataClientSettings(resource + "/api/data/v8.0/");
settings.BeforeRequest = (request) =>
{
request.Headers.Clear();
request.Headers.Add("Authorization", accesstoken.AccessTokenType + " " + accesstoken.AccessToken);
};
settings.PayloadFormat = ODataPayloadFormat.Json;
var client = new ODataClient(settings);
var annotations = new ODataFeedAnnotations();
var transactions = await client.For("mss_transaccions").FindEntriesAsync(annotations);
while (annotations.NextPageLink != null)
{
transactions = transactions.Union(await client.For("mss_transaccions").FindEntriesAsync(annotations.NextPageLink, annotations));
}
हालांकि यह काम करता है, यह अत्यंत धीमी है क्योंकि mss_transaccions पर अपनी क्वेरी तालिका में 7200 इकाइयां हैं। मैं फिडलर में आउटपुट देख रहा हूं और मैं देख सकता हूं कि यह लगभग 20 एमबी जानकारी डाउनलोड करने की कोशिश कर रहा है।
मैंने Google क्रोम पर एक ही क्वेरी चलाने की कोशिश की, और मैं देख सकता था कि डिफ़ॉल्ट रूप से प्राप्त प्रतिक्रिया जीजीआईपी प्रारूप में संपीड़ित होती है, जो 20 एमबी से कुछ मात्र 500 केबी तक जाती है। इसलिए मैं यह समझ रहा हूं कि सरल ओडाटा क्लाइंट किसी भी प्रकार का संपीड़न नहीं कर रहा है, और यही कारण है कि यह बहुत धीमी है।
इसके अतिरिक्त, ओडाटा सरल क्लाइंट का अनुरोध मेटाडेटा जानकारी मांगता है, जो एक और 4 एमबी जोड़ता है, जबकि क्रोम या एक साधारण एचटीपी क्लाइंट अनुरोध को उस कॉल को करने की आवश्यकता नहीं होती है।
क्या ऐसा कुछ भी है जो मैं इसे सुधारने और संपीड़न को सक्षम करने के लिए कर सकता हूं?
धन्यवाद।
मुझे ओडाटा क्लाइंट के साथ थोड़ा सा अनुभव नहीं है, लेकिन क्या कोई तरीका है कि आप आउटगोइंग अनुरोध पर "स्वीकृति-एन्कोडिंग: gzip, deflate" शीर्षलेख को चेक/सेट/संशोधित कर सकते हैं? उसमें कम से कम सर्वर को लात मारना चाहिए और इसे संपीड़ित करना चाहिए। यह तब उम्मीद कर रहा होगा कि क्लाइंट कुछ धाराओं का उपयोग करता है जो इसे डिकंप्रेस करता है। –
@MarvinSmit यही कारण है कि यह ओडाटा प्रश्न नहीं है लेकिन एक सरल। ओडाटा प्रश्न - जो एक विशिष्ट ग्राहक पुस्तकालय है। यह देखते हुए कि आउटगोइंग अनुरोध लाइब्रेरी द्वारा प्रबंधित किया जाता है, इसे संशोधित करना उतना छोटा नहीं है जितना लगता है (यदि पुस्तकालय इसका समर्थन नहीं करता है)। तकनीकी रूप से, हां, एक "बस" को HttpClient को उपclass करना है और इसे संपीड़न शीर्षलेख जानकारी सबमिट करना है .... लेकिन सिमप्ल.ऑडाटा में ऐसा कैसे करें? मैं एक ही नाव में हूं;) – TomTom
ऊपर अपना कोड दिया गया है, मैं स्वीकार करता हूं कि "beforesend" -> "हेडर। स्वीकार करें" स्वीकार करें और इसे स्पिन दें? –