内容分发网络快速入门
重要
PlayFab CDN 是一种传统功能,至少支持一个以前配置过 CDN 的游戏帐户。 对于对内容管理解决方案感兴趣的 PlayFab 新开发人员,我们建议使用 Azure CDN。 要开始使用,请参阅 Azure CDN 文档。
PlayFab 内容分发网络 (CDN) 将各个资源存储为由文件名(也称为键)唯一标识的文件。 这意味着可按键添加、更新、删除和检索资源。
PlayFab CDN 允许按文件夹隔离资源。 资源的文件夹路径成为资源键的一部分。
以下示例是存储在名为 Android
的文件夹中的有效资源键。
Android/Image.png
.
用户提取资源时,其请求会自动路由到最近的边缘位置,以便采用可能的最佳性能提供内容。
然而,这可能会将延迟引入到文件管理操作中(如以下示例中的操作):
文件上传:文件将立即可用。
文件覆盖:在用新文件覆盖之前,旧文件最多向用户显示 24 小时。
文件删除:文件最多继续存在 24 小时,而 delete 命令会将其从所有边缘位置中移除。
上传资源
必须先将资源上传到 CDN,然后用户才能提取它。 这可以在 Game Manager 中完成:
- 从左侧菜单中选择“Content”。
- 选择“File Management”选项卡。
- 然后选择“Upload Files”。
可以:
- 选择多个文件 (1)。
- 选择的每个文件都会出现在列表中 (2)。
- 通过选择“Upload Files”按钮 (3) 提交文件。
上传的文件会出现在列表中 (1)。
请注意,可能还要管理文件夹。
- 若要创建文件夹,请选择“New Folder”按钮 (2)。
填写 Folder name (1)。
选择“Create Folder”按钮 (2)。
这会在树中创建新的文件夹。 然后可以选择此文件夹,并正常上传文件。
或者,可以使用管理 SDK,通过代码上传资产。 这是两步骤过程:
- 首先,调用 GetContentUploadUrl 并获取对上传进行授权的预签名 URL。
- 然后使用 URL 发出
HTTP PUT
请求,提供你的数据和(可选)内容类型。
可考虑使用下面提供的片段,其说明如何获取预签名 URL。
public void UploadFileToCDN(string key, byte[] content, string contentType = "binary/octet-stream") {
GetUploadUrl(key, contentType, presignedUrl => {
PutFile(presignedUrl, content, contentType);
});
}
void GetUploadUrl(string key, string contentType, Action<string> onComplete) {
PlayFabAdminAPI.GetContentUploadUrl(new GetContentUploadUrlRequest() {
ContentType = contentType,
Key = key
}, result => onComplete(result.URL),
error => Debug.LogError(error.GenerateErrorReport()));
}
void PutFile(string presignedUrl, byte[] content, string contentType = "binary/octet-stream") {
// Implement your own PUT HTTP request here.
// - Must use PUT method
// - Must set content type Header
}
然后,可通过 PlayFab Game Manager 检查结果。 确保文件位于列表中。
提取资源
通过代码下载资源与上传资源相同。 如前所述,此过程需要两个步骤。
- 首先,调用 GetContentDownloadUrl 并获取对下载进行授权的预签名 URL。
- 然后,使用预签名 URL 发出
HTTP GET
请求并提取数据。
请考虑使用下面提供的片段,其演示过程的基本内容。
public void DownloadFileFromCDN(string key) {
GetDownloadUrl(key, presignedUrl =>
{
GetFile(presignedUrl);
});
}
void GetDownloadUrl(string key, Action<string> onComplete) {
PlayFabClientAPI.GetContentDownloadUrl(new GetContentDownloadUrlRequest() {
Key = key,
ThruCDN = true
}, result => onComplete(result.URL),
error => Debug.LogError(error.GenerateErrorReport()));
}
void GetFile(string preauthorizedUrl) {
// Implement your own GET HTTP request here.
}
如上所述,CDN 可能涉及文件更新的延迟。 在开发过程中,强制提取最新文件有时十分有用。
通过 GetContentDownloadUrl 调用,可以将 ThruCDN
参数设置为 False
。 返回的 URL 指向未缓存的新文件。
注意
发布的游戏客户端从不使用此选项!