Thư viện ứng dụng .NET của Google Ads giúp đơn giản hoá các hoạt động tương tác của ứng dụng với Google Ads API, với cấu hình tối thiểu từ phía bạn. Tuy nhiên, hiệu suất tổng thể phụ thuộc rất nhiều vào cách thư viện được sử dụng và tích hợp với ứng dụng của bạn.
Hướng dẫn này trình bày các hoạt động tối ưu hoá hiệu suất dành riêng cho ứng dụng .NET và bổ sung cho các phương pháp hay nhất thường áp dụng cho API Google Ads.
Sử dụng lại GoogleAdsClient bất cứ khi nào có thể
GoogleAdsClient
đại diện cho phiên của người dùng khi thực hiện các lệnh gọi API. Thành phần này cung cấp các hoạt động tối ưu hoá như:
- Lưu vào bộ nhớ đệm các kênh gRPC mà dịch vụ API sử dụng. Điều này giúp giảm thời gian thiết lập khi thực hiện các lệnh gọi API ban đầu.
- Sử dụng lại mã truy cập khi có thể. Điều này giúp giảm số lượng chuyến khứ hồi mà thư viện ứng dụng Google Ads .NET phải thực hiện để làm mới mã truy cập.
Sử dụng mã truy cập từ tài khoản cấp người quản lý khi có thể
- Nếu có mã truy cập được cấp ở cấp tài khoản người quản lý, bạn có thể dùng mã này để thực hiện các lệnh gọi API đối với tất cả tài khoản khách hàng Google Ads trong hệ thống phân cấp tài khoản đó. Khi kết hợp với việc sử dụng lại các phiên bản
GoogleAdsClient
, điều này có thể giảm thêm số lượng chuyến khứ hồi mà thư viện ứng dụng phải thực hiện để làm mới mã truy cập.
Sử dụng SearchStream thay vì Search bất cứ khi nào có thể
Mặc dù GoogleAdsService.Search
có thể gửi nhiều yêu cầu phân trang để tải toàn bộ báo cáo xuống, nhưng GoogleAdsService.SearchStream
sẽ gửi một yêu cầu duy nhất và bắt đầu một kết nối liên tục với Google Ads API bất kể kích thước báo cáo. Bằng cách loại bỏ thời gian mạng khứ hồi cần thiết để yêu cầu từng trang riêng lẻ của phản hồi Search
, tuỳ thuộc vào ứng dụng của bạn, SearchStream
có thể mang lại hiệu suất cao hơn so với phân trang. Hãy xem phần Tìm kiếm so với SearchStream để tìm hiểu thêm về hoạt động tối ưu hoá này.
Quản lý việc làm mới mã truy cập theo cách thủ công
Trong một số môi trường như Google Cloud Functions, bạn có thể không dùng lại được các phiên bản GoogleAdsClient
. Những môi trường như vậy có thể đi kèm với các phương pháp hay nhất riêng để duy trì và sử dụng lại dữ liệu. Trong những trường hợp như vậy, bạn có thể mở rộng lớp GoogleAdsConfig
để thực hiện quy trình làm mới mã truy cập của riêng mình như sau.
// 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);
Biên dịch cho bản phát hành
Đảm bảo bạn biên dịch ứng dụng bằng Cấu hình phát hành khi triển khai lên máy chủ. Khi sử dụng cấu hình Gỡ lỗi, ứng dụng của bạn sẽ biên dịch với đầy đủ thông tin gỡ lỗi tượng trưng và không có hoạt động tối ưu hoá.
Lập hồ sơ ứng dụng
Phân tích ứng dụng của bạn về cả mức sử dụng CPU và bộ nhớ để xác định các điểm tắc nghẽn về hiệu suất. Visual Studio cung cấp Công cụ chẩn đoán để giúp lập hồ sơ cho ứng dụng của bạn. Ngoài ra, còn có các công cụ lập hồ sơ thương mại khác.
Sử dụng các phương thức không đồng bộ
Lập trình không đồng bộ bằng cách sử dụng mô hình async-await giúp tránh các điểm nghẽn về hiệu suất và nâng cao khả năng phản hồi tổng thể của ứng dụng. Thư viện Google Ads .NET tạo ra các phương thức không đồng bộ cho tất cả các dịch vụ và phương thức RPC.
Huỷ các phương thức không đồng bộ
Bạn có thể dùng tham số callSettings
để truyền CancellationToken
đến các phương thức không đồng bộ:
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
);
Tắt tính năng ghi nhật ký khi có thể
Thư viện Google Ads .NET sẽ tắt tính năng ghi nhật ký theo mặc định và sử dụng phương pháp ghi nhật ký trì hoãn giúp ứng dụng của bạn có hiệu suất tốt hơn. Nếu bạn bật tính năng ghi nhật ký, hãy nhớ tắt tính năng này trong môi trường phát hành công khai. Nếu cần theo dõi các yêu cầu không thành công cụ thể trong quá trình phát hành chính thức, bạn có thể thực hiện một hoặc nhiều bước sau đây mà không ảnh hưởng tiêu cực đến hiệu suất của ứng dụng:
- Chỉ bật nhật ký tóm tắt.
- Đặt nhật ký đầy đủ ở cấp độ
ERROR
. - Lưu mã yêu cầu cho những yêu cầu cụ thể mà bạn quan tâm để có thể chia sẻ với các kênh hỗ trợ.
Hãy xem hướng dẫn ghi nhật ký để tìm hiểu thêm.
Quyết định xem bạn sẽ sử dụng phương thức SearchStream hay Search
Google Ads API cung cấp 2 cách chính để truy xuất các đối tượng: phương thức Search
(sử dụng phân trang) và SearchStream
(sử dụng truyền phát trực tuyến).
SearchStream
mang lại hiệu suất tốt hơn so với Search
, nhưng có những trường hợp bạn nên dùng Search
.
Hãy xem hướng dẫn về báo cáo phát trực tiếp để tìm hiểu thêm về 2 phương thức này.
Sử dụng tuỳ chọn ReadyToRun
.NET Core 3.1 bổ sung tính năng hỗ trợ cho việc biên dịch trước các tệp nhị phân của bạn cho một nền tảng và cấu trúc cụ thể bằng cách chỉ định chế độ cài đặt PublishReadyToRun
thành true
, sau đó xuất bản tệp nhị phân bằng cách chỉ định RuntimeIdentifier
hợp lệ khi xuất bản. Hãy xem hướng dẫn về tính năng ReadyToRun
để tìm hiểu thêm.
Sử dụng TieredCompilation
TieredCompilation
cho phép .NET xác định các điểm truy cập và cải thiện hiệu suất của nó. Quá trình biên dịch theo cấp hoạt động hiệu quả hơn với lựa chọn ReadyToRun
vì có thể sử dụng hình ảnh được tạo trước khi có sẵn. Hãy xem hướng dẫn về TieredCompilation
để tìm hiểu thêm.
Tinh chỉnh quy trình thu gom rác (GC)
.NET cung cấp hai hồ sơ chung cho việc thu gom rác (GC): hồ sơ máy trạm và hồ sơ máy chủ. Hai hồ sơ này có sự đánh đổi hiệu suất khác nhau. Các ứng dụng sử dụng thư viện Google Ads .NET có xu hướng hoạt động hiệu quả hơn khi chạy trong hồ sơ máy chủ. Bạn có thể hưởng lợi từ việc tinh chỉnh các chế độ cài đặt GC sau đây.
Thu gom rác trên máy chủ: Tính năng thu gom rác trên máy chủ cho phép thời gian chạy .NET mang lại hiệu suất tốt hơn cho ứng dụng API Google Ads bằng cách hoạt động trên nhiều luồng. Hãy xem hướng dẫn này để biết thêm thông tin. Bạn có thể bật tính năng thu gom rác trên máy chủ bằng cách thêm các dòng sau vào tệp
.csproj
của ứng dụng.<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>
Thu gom rác đồng thời: Bạn có thể bật thu gom rác đồng thời để cung cấp cho .NET GC một luồng chuyên dụng để thu gom rác ở thế hệ 2. Chế độ cài đặt này có thể hữu ích khi xử lý các báo cáo có kích thước lớn. Bạn có thể bật tính năng thu gom rác đồng thời bằng cách thêm các dòng sau vào tệp
.csproj
của ứng dụng.<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>
Giữ lại quy trình thu gom rác của máy ảo: Chế độ cài đặt
RetainVMGarbageCollection
sẽ định cấu hình xem các phân đoạn bộ nhớ ảo cần xoá có được đưa vào danh sách chờ để sử dụng trong tương lai hay được trả lại cho hệ điều hành (OS). Bạn có thể bật tính năng giữ lại bộ nhớ ảo bằng cách thêm các dòng sau vào ứng dụng.<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
Bạn có thể tinh chỉnh GC bằng cách chọn một chế độ thiết lập nằm giữa máy trạm và máy chủ. Tất cả các chế độ cài đặt có liên quan đều được chỉ định trong tệp runtimeconfig.json
của ứng dụng .NET Core, một biến môi trường hoặc App.config
của ứng dụng .NET SDK.