ไลบรารีของไคลเอ็นต์ .NET ของ Google Ads ช่วยให้การโต้ตอบของแอปกับ Google Ads API ง่ายขึ้น โดยคุณจะต้องกำหนดค่าเพียงเล็กน้อย อย่างไรก็ตาม ประสิทธิภาพโดยรวมจะขึ้นอยู่กับวิธีใช้ไลบรารีและการผสานรวมกับแอปของคุณเป็นอย่างมาก
คู่มือนี้ครอบคลุมการเพิ่มประสิทธิภาพที่เฉพาะเจาะจงสําหรับแอป .NET และ เสริมแนวทางปฏิบัติแนะนําที่ใช้ได้กับ Google Ads API โดยทั่วไป
ใช้ GoogleAdsClient ซ้ำทุกครั้งที่ทำได้
GoogleAdsClient
แสดงเซสชันของผู้ใช้เมื่อทำการเรียก API โดยจะมีการ
เพิ่มประสิทธิภาพ เช่น
- แคชแชแนล gRPC ที่ใช้โดยบริการ API ซึ่งจะช่วยลดเวลาในการตั้งค่าเมื่อทำการเรียก API ครั้งแรก
- ใช้โทเค็นเพื่อการเข้าถึงซ้ำเมื่อเป็นไปได้ ซึ่งจะลดจำนวนการรับส่ง ที่ไลบรารีไคลเอ็นต์ .NET ของ Google Ads ต้องดำเนินการเพื่อรีเฟรชโทเค็นการเข้าถึง
ใช้โทเค็นเพื่อการเข้าถึงจากบัญชีระดับดูแลจัดการเมื่อเป็นไปได้
- หากมีโทเค็นเพื่อการเข้าถึงที่ออกให้ในระดับบัญชีดูแลจัดการ คุณสามารถใช้โทเค็นดังกล่าว
เพื่อทําการเรียก API กับบัญชีลูกค้า Google Ads ทั้งหมดภายใต้ลําดับชั้นของบัญชีนั้น
เมื่อใช้ร่วมกับการนำอินสแตนซ์
GoogleAdsClient
กลับมาใช้ใหม่ วิธีนี้จะช่วยลดจำนวนการรับส่งที่ไลบรารีของไคลเอ็นต์ต้องดำเนินการเพื่อรีเฟรชโทเค็นการเข้าถึงได้อีก
ใช้ SearchStream แทน Search ทุกครั้งที่เป็นไปได้
แม้ว่า 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);
คอมไพล์สำหรับบิลด์ที่เผยแพร่
ตรวจสอบว่าคุณคอมไพล์แอปโดยใช้การกำหนดค่า รุ่น เมื่อติดตั้งใช้งานในเซิร์ฟเวอร์ เมื่อใช้การกำหนดค่าการแก้ไขข้อบกพร่อง แอปจะ คอมไพล์พร้อมข้อมูลการแก้ไขข้อบกพร่องแบบสัญลักษณ์ทั้งหมดและไม่มีการเพิ่มประสิทธิภาพ
ทำโปรไฟล์แอป
สร้างโปรไฟล์แอปทั้งสำหรับการใช้งาน CPU และหน่วยความจำเพื่อระบุจุดคอขวดด้านประสิทธิภาพ Visual Studio มีเครื่องมือวินิจฉัยที่จะช่วยสร้างโปรไฟล์แอปของคุณ นอกจากนี้ยังมีเครื่องมือสร้างโปรไฟล์เชิงพาณิชย์อื่นๆ ที่พร้อมใช้งานด้วย
ใช้วิธีการแบบไม่พร้อมกัน
การเขียนโปรแกรมแบบอะซิงโครนัสโดยใช้รูปแบบ async-await ช่วยหลีกเลี่ยงปัญหาคอขวดด้านประสิทธิภาพและปรับปรุงการตอบสนองโดยรวมของ แอปของคุณ ไลบรารี .NET ของ Google Ads จะสร้างเมธอดแบบอะซิงโครนัสสำหรับบริการทั้งหมด และเมธอด RPC
การยกเลิกเมธอดที่ไม่พร้อมกัน
คุณใช้พารามิเตอร์ 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.V21.GoogleAdsService);
googleAdsService.SearchStream(request,
delegate (SearchGoogleAdsStreamResponse resp)
{
foreach (GoogleAdsRow googleAdsRow in resp.Results)
{
// Process the row.
}
}, callSettings
);
ปิดการบันทึกเมื่อทำได้
ไลบรารี .NET ของ Google Ads จะปิดการบันทึกโดยค่าเริ่มต้นและใช้แนวทางการบันทึกแบบเลซี ซึ่งช่วยให้แอปมีประสิทธิภาพดีขึ้น หากเปิดการบันทึก โปรดตรวจสอบว่าได้ปิดการบันทึกในสภาพแวดล้อมที่ใช้งานจริงแล้ว หากต้องการตรวจสอบคำขอที่ล้มเหลวเฉพาะในเวอร์ชันที่ใช้งานจริง คุณสามารถทำตามขั้นตอนต่อไปนี้อย่างน้อย 1 ขั้นตอนโดยไม่ส่งผลเสียต่อประสิทธิภาพของแอป
- เปิดบันทึกสรุปเท่านั้น
- ตั้งค่าบันทึกแบบเต็มเป็นระดับ
ERROR
- บันทึกรหัสคำขอสำหรับคำขอที่เฉพาะเจาะจงซึ่งคุณสนใจและแชร์กับช่องทางการสนับสนุนได้
ดูข้อมูลเพิ่มเติมได้ที่คู่มือการบันทึก
เลือกว่าจะใช้เมธอด SearchStream หรือ Search
Google Ads API มีวิธีหลัก 2 วิธีในการดึงข้อมูลออบเจ็กต์ ได้แก่ เมธอด Search
(ซึ่งใช้การแบ่งหน้า) และ SearchStream
(ซึ่งใช้การสตรีม)
SearchStream
ให้ประสิทธิภาพที่ดีกว่า Search
แต่มี
สถานการณ์ที่ควรใช้ Search
ดูข้อมูลเพิ่มเติมเกี่ยวกับ 2 วิธีนี้ได้ในคู่มือรายงานการสตรีม
ใช้ตัวเลือก ReadyToRun
.NET Core 3.1 เพิ่มการรองรับการคอมไพล์ล่วงหน้าของไบนารีไปยังแพลตฟอร์มและสถาปัตยกรรมที่เฉพาะเจาะจงโดยการระบุการตั้งค่า PublishReadyToRun
เป็น true
และ
จากนั้นเผยแพร่ไบนารีโดยการระบุ RuntimeIdentifier
ที่ถูกต้องเมื่อ
เผยแพร่ ดูข้อมูลเพิ่มเติมได้ที่คำแนะนำเกี่ยวกับReadyToRun
ฟีเจอร์
ใช้ TieredCompilation
TieredCompilation
ช่วยให้ .NET ระบุฮอตสปอตและปรับปรุง
ประสิทธิภาพได้ การคอมไพล์แบบแบ่งชั้นจะทำงานได้ดีกว่าเมื่อใช้ตัวเลือก ReadyToRun
เนื่องจาก
สามารถใช้รูปภาพที่สร้างไว้ล่วงหน้าได้เมื่อมี ดูข้อมูลเพิ่มเติมได้ในคำแนะนำเกี่ยวกับ
TieredCompilation
ปรับแต่งการเก็บขยะ (GC)
.NET มีโปรไฟล์ทั่วไป 2 โปรไฟล์สำหรับการเก็บขยะ (GC) ได้แก่ โปรไฟล์เวิร์กสเตชัน และโปรไฟล์เซิร์ฟเวอร์ โปรไฟล์ทั้ง 2 นี้มีการแลกเปลี่ยนประสิทธิภาพที่แตกต่างกัน แอปที่ใช้ไลบรารี .NET ของ Google Ads มักจะมีประสิทธิภาพดีกว่าเมื่อเรียกใช้ในโปรไฟล์เซิร์ฟเวอร์ คุณจะได้รับประโยชน์จากการปรับแต่งการตั้งค่า GC ต่อไปนี้
การเก็บขยะของเซิร์ฟเวอร์: การเก็บขยะของเซิร์ฟเวอร์ช่วยให้รันไทม์ .NET มอบประสิทธิภาพที่ดีขึ้นให้กับแอป Google Ads 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 ได้โดยเลือกการตั้งค่าที่อยู่ระหว่าง
เวิร์กสเตชันกับเซิร์ฟเวอร์ การตั้งค่าที่เกี่ยวข้อง
ทั้งหมดระบุไว้ในไฟล์ runtimeconfig.json
ของแอป .NET Core, ตัวแปรสภาพแวดล้อม
หรือ App.config
ของแอป .NET SDK