> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Início rápido da Content Delivery Network

> Armazene e forneça ativos de jogo por chave na CDN herdada do PlayFab, incluindo caminhos de pasta, comportamento de cache de borda e atrasos para uploads, substituições e exclusões.

<Info>
  A CDN do PlayFab é um recurso herdado com suporte para contas com pelo menos um título que já tenha configurado a CDN anteriormente. Para novos desenvolvedores do PlayFab interessados em uma solução de gerenciamento de conteúdo, recomendamos usar a Azure CDN. Para começar, consulte a [documentação da Azure CDN](https://learn.microsoft.com/en-us/azure/cdn/).
</Info>

A Content Delivery Network (CDN) do PlayFab armazena ativos individuais como arquivos identificados exclusivamente pelo nome do arquivo (também chamado de *chave*). Isso significa que você adiciona, atualiza, remove e recupera ativos por chave.

A CDN do PlayFab permite separar ativos por pastas. O caminho da pasta até o ativo passa a fazer parte da *chave do ativo*.

O exemplo a seguir é uma chave de ativo válida armazenada dentro da pasta chamada `Android`.

`Android/Image.png`.

Quando o usuário busca ativos, as solicitações são roteadas automaticamente para o local de borda mais próximo, de modo que o conteúdo seja entregue com o melhor desempenho possível.

No entanto, isso pode introduzir atrasos em ações de gerenciamento de arquivos, como as encontradas nos exemplos a seguir:

* **Upload de arquivo**: seu arquivo fica disponível imediatamente.

* **Substituição de arquivo**: o arquivo antigo aparece para os usuários por até 24 horas, até ser substituído pelo novo arquivo.

* **Exclusão de arquivo**: o arquivo continua existindo por até 24 horas, enquanto o comando de exclusão o remove de todos os locais de borda.

## Fazendo upload de ativos

Antes que seus usuários possam buscar um ativo, ele precisa ser carregado na CDN. Isso pode ser feito no **Game Manager**:

* Selecione **Content** no menu à esquerda.
* Escolha a guia **File Management**.
* Em seguida, selecione **Upload Files**.

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/legacy/content-delivery-network/tutorials/game-manager-content-file-management-upload-files.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=8434341dcd92836b082c55dbaa661e4b" alt="Game Manager - Conteúdo - Gerenciamento de arquivos - Upload de arquivos" width="2560" height="1184" data-path="images/playfab/data-analytics/legacy/content-delivery-network/tutorials/game-manager-content-file-management-upload-files.png" />

Você pode:

* Selecionar vários **Files (1)**.
* Cada arquivo selecionado aparece na lista **(2)**.
* Enviar seus arquivos selecionando o botão **Upload Files** **(3)**.

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/legacy/content-delivery-network/tutorials/game-manager-choose-and-upload-files.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=7c6bbd20066b2a6c40bdc062c8ec9603" alt="Game Manager - Escolher e fazer upload de arquivos" width="924" height="580" data-path="images/playfab/data-analytics/legacy/content-delivery-network/tutorials/game-manager-choose-and-upload-files.png" />

* Os arquivos carregados aparecem na lista **(1)**.

* Lembre-se de que você também pode gerenciar *pastas*.
  * Para criar uma pasta, selecione o botão **New Folder** **(2)**.

* Preencha o **Folder name (1)**.

* Selecione o botão **Create Folder** **(2)**.

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/legacy/content-delivery-network/tutorials/game-manager-create-new-folder.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=b25109c958f0156cb00fd5a84d75ddbd" alt="Game Manager - Criar nova pasta" width="913" height="240" data-path="images/playfab/data-analytics/legacy/content-delivery-network/tutorials/game-manager-create-new-folder.png" />

Isso cria uma nova pasta na árvore. Em seguida, você pode selecionar essa pasta e fazer upload dos arquivos normalmente.

Como alternativa, você pode fazer upload de ativos via código usando o SDK de administração. Esse é um processo de duas etapas:

1. Primeiro, chame [GetContentUploadUrl](xref:titleid.playfabapi.com.admin.content.getcontentuploadurl) e obtenha a URL pré-assinada que autoriza o upload.
2. Em seguida, use a URL para fazer uma solicitação `HTTP PUT`, fornecer seus dados e (opcionalmente) o tipo de conteúdo.

Considere usar o snippet fornecido abaixo, que mostra como obter uma URL pré-assinada.

```csharp theme={null}
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
}
```

Em seguida, você pode verificar o resultado no Game Manager do PlayFab. Certifique-se de que o arquivo esteja na lista.

## Buscando ativos

Baixar o ativo via código é idêntico a fazer upload do ativo. Como mencionado anteriormente, é um processo de duas etapas.

1. Primeiro, faça uma chamada para [GetContentDownloadUrl](xref:titleid.playfabapi.com.client.content.getcontentdownloadurl) e obtenha uma URL pré-assinada que autoriza o download.
2. Em seguida, use a URL pré-assinada para fazer uma solicitação `HTTP GET` e buscar os dados.

Considere usar o snippet fornecido abaixo, que mostra o básico do processo.

```csharp theme={null}
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.
}
```

Como mencionado antes, a CDN pode envolver latência em relação a atualizações de arquivos. Durante o desenvolvimento, às vezes é útil forçar a busca dos arquivos mais recentes.

A chamada [GetContentDownloadUrl](xref:titleid.playfabapi.com.client.content.getcontentdownloadurl) permite definir o parâmetro `ThruCDN` como `False`. A URL retornada aponta para arquivos novos, sem cache.

<Note>
  Seu cliente de jogo publicado *nunca* deve usar essa opção!
</Note>


## Related topics

- [Rede de distribuição de conteúdo](/pt-BR/services/playfab/data-analytics/legacy/content-delivery-network/index.md)
- [Início rápido da Unreal Engine](/pt-BR/services/playfab/sdks/unreal/quickstart.md)
- [Início rápido do Party](/pt-BR/services/playfab/multiplayer/networking/quickstart.md)
- [Início rápido](/pt-BR/services/playfab/economy-monetization/economy-v2/quickstart.md)
- [Início rápido do User Generated Content (UGC)](/pt-BR/services/playfab/economy-monetization/economy-v2/ugc/quickstart.md)
