Google Ads .NET क्लाइंट लाइब्रेरी, आपके ऐप्लिकेशन के Google Ads API के साथ इंटरैक्शन को आसान बनाती है. इसके लिए, आपको बहुत कम कॉन्फ़िगरेशन की ज़रूरत होती है. हालांकि, लाइब्रेरी की परफ़ॉर्मेंस इस बात पर निर्भर करती है कि उसका इस्तेमाल कैसे किया गया है और उसे आपके ऐप्लिकेशन के साथ कैसे इंटिग्रेट किया गया है.
इस गाइड में, .NET ऐप्लिकेशन के लिए परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के बारे में बताया गया है. साथ ही, इसमें उन सबसे सही तरीकों के बारे में भी बताया गया है जो आम तौर पर Google Ads API पर लागू होते हैं.
जब भी हो सके, GoogleAdsClient का फिर से इस्तेमाल करें
GoogleAdsClient
, एपीआई कॉल करते समय उपयोगकर्ता के सेशन को दिखाता है. इससे ये ऑप्टिमाइज़ेशन मिलते हैं:
- एपीआई सेवाओं के इस्तेमाल किए गए gRPC चैनलों को कैश मेमोरी में सेव करना. इससे, शुरुआती एपीआई कॉल करने के दौरान सेटअप में लगने वाला समय कम हो जाता है.
- जब भी हो सके, ऐक्सेस टोकन का फिर से इस्तेमाल करना. इससे, Google Ads .NET क्लाइंट लाइब्रेरी को ऐक्सेस टोकन रीफ़्रेश करने के लिए, जितनी बार रीडायरेक्ट करना पड़ता है उसकी संख्या कम हो जाती है.
जब भी हो सके, मैनेजर लेवल वाले खाते से ऐक्सेस टोकन का इस्तेमाल करें
- अगर आपके पास मैनेजर खाता लेवल पर जारी किया गया ऐक्सेस टोकन है, तो उसका इस्तेमाल उस खाते के लेआउट में मौजूद सभी Google Ads क्लाइंट खातों के लिए, एपीआई कॉल करने के लिए किया जा सकता है.
GoogleAdsClient
इंस्टेंस का फिर से इस्तेमाल करने के साथ, इससे क्लाइंट लाइब्रेरी को ऐक्सेस टोकन रीफ़्रेश करने के लिए, दौरे की संख्या को और भी कम किया जा सकता है.
जब भी हो सके, Search के बजाय SearchStream का इस्तेमाल करें
GoogleAdsService.Search
, पूरी रिपोर्ट डाउनलोड करने के लिए, पेज के हिसाब से कई अनुरोध भेज सकता है. वहीं, GoogleAdsService.SearchStream
एक ही अनुरोध भेजता है और रिपोर्ट के साइज़ के बावजूद, Google Ads API के साथ लगातार कनेक्शन बनाता है. Search
रिस्पॉन्स के हर पेज का अनुरोध करने के लिए, नेटवर्क के दौर के समय को हटाकर, आपके ऐप्लिकेशन के आधार पर, SearchStream
पेजिंग की तुलना में बेहतर परफ़ॉर्मेंस दे सकता है. इस ऑप्टिमाइज़ेशन के बारे में ज़्यादा जानने के लिए, Search बनाम SearchStream देखें.
ऐक्सेस टोकन को मैन्युअल तरीके से रीफ़्रेश करना
Google Cloud Functions जैसे कुछ एनवायरमेंट में, GoogleAdsClient
इंस्टेंस का फिर से इस्तेमाल करना मुमकिन नहीं हो सकता. ऐसे एनवायरमेंट में, डेटा को सेव और फिर से इस्तेमाल करने के लिए, सबसे सही तरीके अपनाए जा सकते हैं. ऐसे मामलों में, ऐक्सेस टोकन को खुद रिफ़्रेश करने के लिए, GoogleAdsConfig
क्लास को इस तरह बढ़ाया जा सकता है.
// Create your own config class by extending the GoogleAdsConfig class.
class MyGoogleAdsConfig : GoogleAdsConfig
{
public MyGoogleAdsConfig() : base()
{
// Disable the library's in-built channel caching mechanism.
this.UseChannelCache = false;
}
protected override ICredential CreateCredentials()
{
// TODO: Create your own ICredentials object here. You may refer to the
// default implementation of GoogleAdsConfig::CreateCreateCredentials
// for an example.
}
}
// Use your own config class when initializing the GoogleAdsClient instance.
MyGoogleAdsConfig myconfig = new MyGoogleAdsConfig();
GoogleAdsClient client = new GoogleAdsClient(myconfig);
रिलीज़ के लिए तैयार बिल्ड के लिए कंपाइल करना
पक्का करें कि सर्वर पर डिप्लॉय करते समय, रिलीज़ कॉन्फ़िगरेशन का इस्तेमाल करके अपने ऐप्लिकेशन को कॉम्पाइल किया गया हो. डीबग कॉन्फ़िगरेशन का इस्तेमाल करने पर, आपका ऐप्लिकेशन पूरी तरह से सिंबल के तौर पर डीबग की जानकारी के साथ और बिना किसी ऑप्टिमाइज़ेशन के कॉम्पाइल होता है.
अपने ऐप्लिकेशन की प्रोफ़ाइल बनाना
सीपीयू और मेमोरी के इस्तेमाल के लिए, अपने ऐप्लिकेशन की प्रोफ़ाइल बनाएं. इससे, परफ़ॉर्मेंस में आने वाली समस्याओं का पता चलता है. Visual Studio में, आपके ऐप्लिकेशन की प्रोफ़ाइल बनाने के लिए, गड़बड़ी का पता लगाने वाले टूल उपलब्ध होते हैं. इसके अलावा, कारोबार के लिए उपलब्ध प्रोफ़ाइल बनाने वाले अन्य टूल भी उपलब्ध हैं.
एसिंक्रोनस तरीकों का इस्तेमाल करना
async-await पैराडाइम का इस्तेमाल करके, असाइनोक्रोनस प्रोग्रामिंग करने से, परफ़ॉर्मेंस में आने वाली रुकावटों से बचा जा सकता है. साथ ही, इससे आपके ऐप्लिकेशन की परफ़ॉर्मेंस बेहतर होती है. Google Ads .NET लाइब्रेरी, सभी सेवाओं और आरपीसी तरीकों के लिए असाइनोक्रोनस तरीके जनरेट करती है.
एसिंक्रोनस तरीके रद्द करना
callSettings
पैरामीटर का इस्तेमाल करके, CancellationToken
को असाइन्क्रोनस तरीके से पास किया जा सकता है:
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
cancellationTokenSource.CancelAfter(3000);
CallSettings callSettings = CallSettings.FromCancellationToken(cancellationTokenSource.Token);
string query = "SELECT campaign.name FROM campaign";
var request = new SearchGoogleAdsStreamRequest()
{
CustomerId = customerId.ToString(),
Query = query,
};
GoogleAdsServiceClient googleAdsService = client.GetService(
Services.V19.GoogleAdsService);
googleAdsService.SearchStream(request,
delegate (SearchGoogleAdsStreamResponse resp)
{
foreach (GoogleAdsRow googleAdsRow in resp.Results)
{
// Process the row.
}
}, callSettings
);
जब भी हो सके, लॉगिंग की सुविधा बंद करें
Google Ads .NET लाइब्रेरी, लॉगिंग को डिफ़ॉल्ट रूप से बंद कर देती है. साथ ही, यह लॉगिंग के लिए 'लेज़ी लॉगिंग' वाले तरीके का इस्तेमाल करती है. इससे आपके ऐप्लिकेशन की परफ़ॉर्मेंस बेहतर होती है. अगर आपने लॉगिंग की सुविधा चालू की है, तो पक्का करें कि आपने इसे प्रोडक्शन एनवायरमेंट में बंद कर दिया हो. अगर आपको प्रोडक्शन में, अस्वीकार किए गए अनुरोधों को मॉनिटर करना है, तो अपने ऐप्लिकेशन की परफ़ॉर्मेंस पर बुरा असर डाले बिना, यहां दिए गए एक या एक से ज़्यादा चरणों को पूरा किया जा सकता है:
- सिर्फ़ खास जानकारी वाले लॉग चालू करें.
- पूरे लॉग को
ERROR
लेवल पर सेट करें. - अपने खास अनुरोधों के लिए अनुरोध आईडी सेव करें. इन अनुरोधों को सहायता चैनलों के साथ शेयर किया जा सकता है.
ज़्यादा जानने के लिए, लॉगिंग गाइड देखें.
यह तय करना कि SearchStream या Search के तरीके में से किसका इस्तेमाल करना है
Google Ads API, ऑब्जेक्ट पाने के दो मुख्य तरीके उपलब्ध कराता है: Search
तरीका (जिसमें पेजेशन का इस्तेमाल होता है) और SearchStream
(जिसमें स्ट्रीमिंग का इस्तेमाल होता है).
SearchStream
, Search
की तुलना में बेहतर परफ़ॉर्म करता है. हालांकि, कुछ मामलों में Search
को प्राथमिकता दी जाती है.
इन दोनों तरीकों के बारे में ज़्यादा जानने के लिए, रिपोर्ट स्ट्रीम करने से जुड़ी गाइड देखें.
ReadyToRun विकल्प का इस्तेमाल करना
.NET Core 3.1 में, PublishReadyToRun
सेटिंग को true
पर सेट करके, किसी खास प्लैटफ़ॉर्म और आर्किटेक्चर के लिए बाइनरी को पहले से कॉम्पाइल करने की सुविधा जोड़ी गई है. इसके बाद, पब्लिश करते समय मान्य RuntimeIdentifier
सेट करके बाइनरी को पब्लिश किया जाता है. ज़्यादा जानने के लिए, ReadyToRun
सुविधा के बारे में गाइड देखें.
TieredCompilation का इस्तेमाल करना
TieredCompilation
की मदद से, .NET हॉटस्पॉट की पहचान कर सकता है और अपनी परफ़ॉर्मेंस को बेहतर बना सकता है. टीयर वाला कंपाइलेशन, ReadyToRun
विकल्प के साथ बेहतर तरीके से काम करता है, क्योंकि उपलब्ध होने पर यह पहले से जनरेट की गई इमेज का इस्तेमाल कर सकता है. ज़्यादा जानने के लिए, TieredCompilation
के बारे में गाइड देखें.
गार्बेज कलेक्शन (जीसी) को बेहतर बनाना
.NET, गै़रबेज कलेक्शन (जीसी) के लिए दो सामान्य प्रोफ़ाइलें उपलब्ध कराता है: वर्कस्टेशन प्रोफ़ाइल और सर्वर प्रोफ़ाइल. इन दोनों प्रोफ़ाइलों की परफ़ॉर्मेंस में अलग-अलग बदलाव होते हैं. Google Ads .NET लाइब्रेरी का इस्तेमाल करने वाले ऐप्लिकेशन, सर्वर प्रोफ़ाइल में चलने पर बेहतर परफ़ॉर्म करते हैं. नीचे दी गई GC सेटिंग में बदलाव करके, आपको फ़ायदा मिल सकता है.
सर्वर गै़रबेज कलेक्शन: सर्वर गै़रबेज कलेक्शन की सुविधा की मदद से, .NET रनटाइम कई थ्रेड पर काम करके, Google Ads API ऐप्लिकेशन को बेहतर परफ़ॉर्मेंस देता है. ज़्यादा जानकारी के लिए, यह गाइड देखें. अपने ऐप्लिकेशन की
.csproj
फ़ाइल में ये लाइनें जोड़कर, सर्वर गै़रबेज कलेक्शन की सुविधा चालू की जा सकती है.<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>
एक साथ कई आइटम हटाना: एक साथ कई आइटम हटाने की सुविधा चालू करके, .NET GC को जनरेशन 2 में आइटम हटाने के लिए एक खास थ्रेड दी जा सकती है. बड़े साइज़ की रिपोर्ट प्रोसेस करते समय, यह सेटिंग काम की हो सकती है. एक साथ कई आइटम हटाने की सुविधा चालू करने के लिए, अपने ऐप्लिकेशन की
.csproj
फ़ाइल में ये लाइनें जोड़ें.<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>
वर्चुअल मेमोरी का ग़ैर-ज़रूरी डेटा मिटाएं:
RetainVMGarbageCollection
सेटिंग से यह तय होता है कि वर्चुअल मेमोरी के मिटाए जाने वाले सेगमेंट को, आने वाले समय में इस्तेमाल करने के लिए स्टैंडबाय सूची में रखा जाए या ऑपरेटिंग सिस्टम (ओएस) को वापस भेजा जाए. अपने ऐप्लिकेशन में ये लाइनें जोड़कर, वर्चुअल मेमोरी के रखरखाव की सुविधा चालू की जा सकती है.<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
वर्कस्टेशन और सर्वर के बीच के सेटअप का इस्तेमाल करके, अपने जीसी को बेहतर बनाया जा सकता है. सभी ज़रूरी सेटिंग, आपके .NET Core ऐप्लिकेशन की runtimeconfig.json
फ़ाइल, किसी एनवायरमेंट वैरिएबल या .NET SDK टूल वाले ऐप्लिकेशन के App.config
में बताई गई होती हैं.