Google Ads .NET ক্লায়েন্ট লাইব্রেরি আপনার পক্ষ থেকে ন্যূনতম কনফিগারেশন সহ Google Ads API-এর সাথে আপনার অ্যাপের ইন্টারঅ্যাকশনকে সহজ করে। যাইহোক, সামগ্রিক কর্মক্ষমতা অত্যন্ত নির্ভর করে কিভাবে লাইব্রেরি ব্যবহার করা হয় এবং আপনার অ্যাপের সাথে একত্রিত হয়।
এই নির্দেশিকাটি .NET অ্যাপগুলির জন্য নির্দিষ্ট পারফরম্যান্স অপ্টিমাইজেশানগুলিকে কভার করে এবং সর্বোত্তম অনুশীলনগুলিকে পরিপূরক করে যা সাধারণত Google বিজ্ঞাপন API-এর জন্য প্রযোজ্য৷
যখনই সম্ভব GoogleAdsClient পুনরায় ব্যবহার করুন
API কল করার সময় GoogleAdsClient
একটি ব্যবহারকারীর সেশন উপস্থাপন করে। এটি অপ্টিমাইজেশন প্রদান করে যেমন:
- API পরিষেবাগুলির দ্বারা ব্যবহৃত gRPC চ্যানেলগুলি ক্যাশে করা হচ্ছে। প্রাথমিক API কল করার সময় এটি সেটআপের সময় হ্রাস করে।
- সম্ভব হলে অ্যাক্সেস টোকেন পুনরায় ব্যবহার করা। এটি রাউন্ড ট্রিপের সংখ্যা হ্রাস করে যা Google Ads .NET ক্লায়েন্ট লাইব্রেরীকে অ্যাক্সেস টোকেন রিফ্রেশ করতে করতে হয়।
সম্ভব হলে ম্যানেজার লেভেল অ্যাকাউন্ট থেকে অ্যাক্সেস টোকেন ব্যবহার করুন
- আপনার যদি ম্যানেজার অ্যাকাউন্ট লেভেলে অ্যাক্সেস টোকেন ইস্যু করা থাকে, তাহলে আপনি সেই অ্যাকাউন্টের অনুক্রমের অধীনে সমস্ত Google বিজ্ঞাপন ক্লায়েন্ট অ্যাকাউন্টের বিরুদ্ধে API কল করতে এটি ব্যবহার করতে পারেন।
GoogleAdsClient
দৃষ্টান্ত পুনঃব্যবহারের সাথে একত্রিত হলে, এটি অ্যাক্সেস টোকেন রিফ্রেশ করতে ক্লায়েন্ট লাইব্রেরির রাউন্ড ট্রিপের সংখ্যা আরও কমিয়ে দিতে পারে।
যখনই সম্ভব সার্চের পরিবর্তে SearchStream ব্যবহার করুন
যদিও GoogleAdsService.Search
সম্পূর্ণ রিপোর্ট ডাউনলোড করার জন্য একাধিক পৃষ্ঠাযুক্ত অনুরোধ পাঠাতে পারে, GoogleAdsService.SearchStream
একটি একক অনুরোধ পাঠায় এবং প্রতিবেদনের আকার নির্বিশেষে Google Ads API-এর সাথে একটি অবিরাম সংযোগ শুরু করে। আপনার অ্যাপের উপর নির্ভর করে Search
প্রতিক্রিয়ার প্রতিটি পৃথক পৃষ্ঠার অনুরোধ করার জন্য প্রয়োজনীয় রাউন্ড-ট্রিপ নেটওয়ার্ক সময় বাদ দিয়ে, SearchStream
পেজিং এর উপর উন্নত কর্মক্ষমতা অফার করতে পারে। এই অপ্টিমাইজেশন সম্পর্কে আরও জানতে অনুসন্ধান বনাম অনুসন্ধান স্ট্রীম দেখুন।
ম্যানুয়ালি অ্যাক্সেস টোকেন রিফ্রেশ পরিচালনা করুন
Google ক্লাউড ফাংশনগুলির মতো নির্দিষ্ট পরিবেশে, 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);
রিলিজ বিল্ড জন্য কম্পাইল
সার্ভারে স্থাপন করার সময় আপনি রিলিজ কনফিগারেশন ব্যবহার করে আপনার অ্যাপ কম্পাইল করেছেন তা নিশ্চিত করুন। ডিবাগ কনফিগারেশন ব্যবহার করার সময়, আপনার অ্যাপটি সম্পূর্ণ সিম্বলিক ডিবাগ তথ্য এবং কোন অপ্টিমাইজেশান সহ কম্পাইল করে।
আপনার অ্যাপ্লিকেশন প্রোফাইল
পারফরম্যান্সের বাধা শনাক্ত করতে CPU এবং মেমরি ব্যবহারের জন্য আপনার অ্যাপটি প্রোফাইল করুন। ভিজ্যুয়াল স্টুডিও আপনার অ্যাপকে প্রোফাইলে সহায়তা করার জন্য ডায়াগনস্টিক টুল সরবরাহ করে। এছাড়াও উপলব্ধ অন্যান্য বাণিজ্যিক প্রোফাইলিং সরঞ্জাম আছে.
অ্যাসিঙ্ক পদ্ধতি ব্যবহার করুন
অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং অ্যাসিঙ্ক-ওয়েট প্যারাডাইম ব্যবহার করে পারফরম্যান্সের বাধা এড়াতে এবং আপনার অ্যাপের সামগ্রিক প্রতিক্রিয়াশীলতা বাড়াতে সাহায্য করে। Google Ads .NET লাইব্রেরি সমস্ত পরিষেবা এবং RPC পদ্ধতির জন্য অ্যাসিঙ্ক পদ্ধতি তৈরি করে।
অ্যাসিঙ্ক পদ্ধতি বাতিলকরণ
অ্যাসিঙ্ক পদ্ধতিতে CancellationToken
পাস করতে আপনি callSettings
প্যারামিটার ব্যবহার করতে পারেন:
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.V17.GoogleAdsService);
googleAdsService.SearchStream(request,
delegate (SearchGoogleAdsStreamResponse resp)
{
foreach (GoogleAdsRow googleAdsRow in resp.Results)
{
// Process the row.
}
}, callSettings
);
আপনি যখন পারেন লগিং বন্ধ করুন
Google Ads .NET লাইব্রেরি ডিফল্টরূপে লগিং বন্ধ করে এবং একটি অলস লগিং পদ্ধতি ব্যবহার করে যা আপনার অ্যাপকে আরও ভালো পারফরম্যান্স দেয়। আপনি লগিং চালু করলে, নিশ্চিত করুন যে আপনি উৎপাদন পরিবেশে এটি বন্ধ করেছেন। আপনি যদি উত্পাদনে নির্দিষ্ট ব্যর্থ অনুরোধগুলির জন্য নিরীক্ষণ করতে চান, তাহলে আপনি আপনার অ্যাপের কার্যকারিতাকে বিরূপভাবে প্রভাবিত না করে নিম্নলিখিত এক বা একাধিক পদক্ষেপ করতে পারেন:
- শুধুমাত্র সারাংশ লগ চালু করুন.
- সম্পূর্ণ লগগুলি
ERROR
স্তরে সেট করুন৷ - আগ্রহের নির্দিষ্ট অনুরোধের জন্য অনুরোধ আইডি সংরক্ষণ করুন যা আপনি সমর্থন চ্যানেলগুলির সাথে ভাগ করতে পারেন৷
আরও জানতে লগিং গাইড দেখুন।
SearchStream বা অনুসন্ধান পদ্ধতি ব্যবহার করবেন কিনা তা স্থির করুন
Google Ads API বস্তুগুলি পুনরুদ্ধার করার দুটি প্রধান উপায় প্রদান করে: Search
পদ্ধতি (যা পৃষ্ঠা সংখ্যা ব্যবহার করে) এবং SearchStream
(যা স্ট্রিমিং ব্যবহার করে)।
SearchStream
Search
চেয়ে ভালো পারফরম্যান্স প্রদান করে, কিন্তু এমন পরিস্থিতিতে আছে যেখানে Search
অগ্রাধিকার দেওয়া হয়।
দুটি পদ্ধতি সম্পর্কে আরও জানতে স্ট্রিমিং রিপোর্ট গাইড দেখুন।
ReadyToRun বিকল্প ব্যবহার করুন
.NET কোর 3.1 আপনার বাইনারিগুলিকে একটি নির্দিষ্ট প্ল্যাটফর্ম এবং আর্কিটেকচারে প্রি-কম্পাইল করার জন্য একটি PublishReadyToRun
সেটিংসকে true
তে নির্দিষ্ট করে এবং তারপর প্রকাশ করার সময় একটি বৈধ RuntimeIdentifier
উল্লেখ করে বাইনারি প্রকাশ করার জন্য সমর্থন যোগ করে। আরও জানতে ReadyToRun
বৈশিষ্ট্যের নির্দেশিকা দেখুন।
Tiered Compilation ব্যবহার করুন
TieredCompilation
.NET কে হটস্পট সনাক্ত করতে এবং এর কর্মক্ষমতা উন্নত করতে দেয়। টায়ার্ড সংকলন ReadyToRun
বিকল্পের সাথে আরও ভাল কাজ করে কারণ এটি উপলব্ধ থাকাকালীন পূর্ব-উত্পন্ন চিত্র ব্যবহার করতে পারে। আরও জানতে TieredCompilation
এর গাইড দেখুন।
আপনার আবর্জনা সংগ্রহ (GC) সূক্ষ্ম সুর করুন
.NET আবর্জনা সংগ্রহের (GC) জন্য দুটি সাধারণ প্রোফাইল সরবরাহ করে: একটি ওয়ার্কস্টেশন প্রোফাইল এবং একটি সার্ভার প্রোফাইল৷ এই দুটি প্রোফাইলের পারফরম্যান্স ট্রেডঅফ ভিন্ন । Google Ads .NET লাইব্রেরি ব্যবহার করা অ্যাপগুলি সার্ভার প্রোফাইলে চলার সময় আরও ভাল পারফর্ম করে। আপনি নিম্নলিখিত GC সেটিংস সূক্ষ্ম টিউনিং থেকে উপকৃত হতে পারেন।
সার্ভার আবর্জনা সংগ্রহ: সার্ভার আবর্জনা সংগ্রহ .NET রানটাইমকে একাধিক থ্রেডে অপারেটিং করে একটি Google বিজ্ঞাপন API অ্যাপে আরও ভালো পারফরম্যান্স দেওয়ার অনুমতি দেয়। আরো বিস্তারিত জানার জন্য এই নির্দেশিকা দেখুন. আপনি আপনার অ্যাপের
.csproj
ফাইলে নিম্নলিখিত লাইন যোগ করে সার্ভার আবর্জনা সংগ্রহ চালু করতে পারেন।<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>
সমসাময়িক আবর্জনা সংগ্রহ: আপনি .NET GC কে প্রজন্ম 2-এ আবর্জনা সংগ্রহের জন্য একটি ডেডিকেটেড থ্রেড দেওয়ার জন্য একযোগে আবর্জনা সংগ্রহ চালু করতে পারেন। বড় আকারের রিপোর্টগুলি প্রক্রিয়া করার সময় এই সেটিংটি কার্যকর হতে পারে। আপনি আপনার অ্যাপের
.csproj
ফাইলে নিম্নলিখিত লাইনগুলি যোগ করে সমসাময়িক আবর্জনা সংগ্রহ চালু করতে পারেন।<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>
VM আবর্জনা সংগ্রহ বজায় রাখুন:
RetainVMGarbageCollection
সেটিংস কনফিগার করে যে ভার্চুয়াল মেমরির সেগমেন্টগুলিকে মুছে ফেলা উচিত ভবিষ্যতে ব্যবহারের জন্য একটি স্ট্যান্ডবাই তালিকায় রাখা হয়েছে, নাকি অপারেটিং সিস্টেমে (OS) আবার ছেড়ে দেওয়া হয়েছে। আপনি আপনার অ্যাপে নিম্নলিখিত লাইনগুলি যোগ করে ভার্চুয়াল মেমরি ধরে রাখার সুবিধা চালু করতে পারেন।<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
আপনি একটি ওয়ার্কস্টেশন এবং একটি সার্ভারের মধ্যে একটি সেটআপের জন্য নিষ্পত্তি করে আপনার GC টিউন করতে পারেন। সমস্ত প্রাসঙ্গিক সেটিংস আপনার .NET কোর অ্যাপের runtimeconfig.json
ফাইল, একটি পরিবেশ পরিবর্তনশীল, বা আপনার .NET SDK অ্যাপের App.config
এ নির্দিষ্ট করা আছে।