所有使用 Display & Video 360 API 的应用都必须优化配额。 优化配额用量可简化 API 请求,并帮助您避免超出设定的速率限制时返回的错误,从而提高性能。
本页详细介绍了一般最佳实践,并重点介绍了 Display & Video 360 API 中有助于减少配额用量的补充功能。
同时针对多个广告客户提出请求
Display & Video 360 API 中的大多数方法都会在网址中指定广告客户。在进行指定同一广告客户的调用时,除了项目级配额之外,还会对这些方法强制执行更严格的“每个项目广告客户/项目”速率限制。
若要针对此配额进行优化,请仅允许指定不同广告客户的并发请求。
利用 filter
和 orderBy
参数
检索多个资源时,请使用 list
方法(而非 get
方法)。但是,由于页面大小的限制,list
调用可能仍会消耗大量的配额。如果您只需要检索完整列表响应的一部分,则可以利用可选的 filter
和 orderBy
参数来优化配额使用。
借助 filter
参数,您可以将 list
调用检索的资源限制为属性符合给定表达式的资源。在尝试检索以下内容时,此参数非常有用:
- ID 未知但属性已知的特定资源。如果搜索特定资源,则可以按所需资源的已知属性来过滤返回的列表。例如,按已知的
displayName
过滤订单项,按预期的creativeType
过滤广告素材,按相关的exchange
过滤广告资源来源。 - 关联的资源。Display & Video 360 中的资源通常彼此关联。您可以使用过滤条件将返回的资源限制为与其他资源存在特定关系的资源。例如,检索特定
campaignId
下的所有广告订单以及分配给某个订单项的所有广告素材。 - 仅限具有可操作属性的资源。借助 API 功能,您可以轻松检查资源的状态并以编程方式做出反应。借助过滤器,您可以使用
list
调用仅获取需要操作的资源。例如,检索显示特定可操作lineItemWarningMessage
的所有订单项、自指定日期时间以来更新的所有广告订单,或approvalStatus
失败的所有广告素材。
orderBy
参数允许您按特定属性(升序或降序)对检索到的资源进行排序。orderBy
(尤其是与 filter
一起使用时)可用于限制在查找特定资源之前需要遍历的页面数量。您还可以通过它轻松获取资源列表的上限和下限。例如,通过按 updateTime
排序,您可以快速找到广告客户最近更新的订单项或广告订单。
使用批量函数和资源范围的函数
Display & Video 360 API 提供了许多批量和资源范围函数,可通过单个请求执行多项操作。此类函数的示例包括:
- 批量修改属于单个渠道的网站。您可以为渠道分配数千个网站。您可以使用单个
bulkEdit
或replace
请求分别添加和移除多个网站或替换某个渠道的全部内容,而无需使用单个create
或delete
请求管理某个渠道的网站列表。 - 管理广告客户的整个定位套件。资源的定位套件可跨多种定位类型进行分配。利用资源级定位函数(如
advertisers
服务中的listAssignedTargetingOptions
和editAssignedTargetingOptions
),您可以在单个请求中跨多个定位类型检索、创建和移除定位条件。通过将广告客户的定位套件设置为单个请求,这样可以降低配额费用。 - 针对多个订单项设置相同的定位限制。如果您需要同时对多个订单项进行相同的定位更改,只需使用单个
advertisers.lineItems.bulkEditAssignedTargetingOptions
请求即可。 - 启用或暂停多个订单项。订单项创建后必须先启用,然后才能开始投放。如果您要快速连续创建多个订单项,可以通过单个
advertisers.lineItems.bulkUpdate
请求激活所有订单项。您也可以使用同一方法暂停多个订单项,以停止投放这些订单项。
缓存和检查常用 ID
Display & Video 360 API 中的许多操作都需要使用通过该 API 本身检索到的资源 ID,包括定位选项 ID、Google 受众群体 ID 等。为了避免每次使用时都从 API 检索 ID,我们建议您在本地存储这些 ID。
但是,某些资源可能会被弃用、删除或因其他原因不再可用。尝试使用这些资源的 ID 可能会返回错误。因此,我们建议您每周使用适当的 get
或过滤后的 list
方法检查所有缓存的 ID,以确认它是否仍可检索且具有预期状态。
针对长时间运行的操作实现指数退避算法
在轮询以查看长时间运行的操作(例如 SDF 下载任务)是否已完成时,请使用指数退避算法策略来降低发送的请求频率和总数。
指数退避算法是网络应用的标准错误处理策略,在此策略中,客户端按照不断增加的时间间隔定期重试请求。如果使用得当,指数退避算法还能提高带宽使用效率、减少获得成功响应所需的请求数,并最大程度地提高并发环境中的请求吞吐量。
如需查看使用客户端库实现的指数退避策略,请参阅我们的 SDF 下载代码示例。实现简单指数退避算法的分步流程如下:
- 向 API 发出
sdfdownloadtasks.operations.get
请求。 - 检索操作对象。
- 如果
done
字段不为 true,则表示您应该重试请求。 - 等待 5 秒 + 随机的毫秒数,然后重试该请求。
- 如果
- 检索操作对象。
- 如果
done
字段不为 true,则表示您应该重试请求。 - 等待 10 秒 + 随机的毫秒数,然后重试该请求。
- 如果
- 检索操作对象。
- 如果
done
字段不为 true,则表示您应该重试请求。 - 等待 20 秒 + 随机毫秒数,然后重试请求。
- 如果
- 检索操作对象。
- 如果
done
字段不为 true,则表示您应该重试请求。 - 等待 40 秒 + 随机毫秒数,然后重试请求。
- 如果
- 检索操作对象。
- 如果
done
字段不为 true,则表示您应该重试请求。 - 等待 80 秒 + 随机毫秒数,然后重试请求。
- 如果
- 继续使用此模式,直到查询对象更新或达到所用时间上限。