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

# Cache de Aplicação

> Aprenda a usar o cache da aplicação.

Quando uma requisição é feita, ela retorna informações da aplicação e as armazena em cache no próprio objeto Application. Isso é útil se você precisar acessar essas informações novamente em um curto período, pois não vale a pena fazer uma nova requisição à API para obter dados atualizados. Nesses casos, você pode acessar `Application.cache`.

```python theme={null}
import squarecloud as square

client = square.Client('API_KEY')

async def example():
    app = await client.app('application_id')

    # Observe que, como nenhuma requisição foi feita, os campos do cache serão None
    print(app.cache.logs)    # None
    print(app.cache.status)  # None
    print(app.cache.backup)  # None

    # Agora vamos fazer algumas requisições
    await app.logs()
    await app.status()
    await app.backup()

    # O cache foi atualizado 🤯
    print(app.cache.logs)    # LogsData(...)
    print(app.cache.status)  # StatusData(...)
    print(app.cache.backup)  # BackupData(...)
```

## Fazendo requisições sem atualizar o cache

Se, por algum motivo, você não quiser atualizar o cache ao fazer uma solicitação, poderá passar o argumento `update_cache=False`.

```python theme={null}
import squarecloud as square

client = square.Client('API_KEY')

async def example():
    app = await client.app('application_id')
    await app.status(update_cache=False)
    print(app.cache.status)  # None
```

<Note>
  Se os argumentos passados para `cache.update` não forem instâncias de `StatusData`, `LogsData` ou `BackupData`, um erro `SquareException` será levantado.
</Note>

## Limpando o cache manualmente

Você pode limpar o cache manualmente usando `cache.clear`.

```python theme={null}
import squarecloud as square

client = square.Client('API_KEY')


async def example():
    app = await client.app('application_id')

    await app.status()
    print(app.cache.status)  # StatusData(...)
    app.cache.clear()  # Limpa o cache
    print(app.cache.status)  # None
```

## Atualizando o cache manualmente

Você também pode atualizá-lo manualmente usando o método `cache.update`.

```python theme={null}
import squarecloud as square

client = square.Client('API_KEY')


async def example():
    app = await client.app('application_id')

    logs = await app.logs()
    status = await app.status()
    backup = await app.backup()

    app.cache.clear()  # Limpa o cache
    app.cache.update(status, logs, backup)  # Atualiza o cache

    print(app.cache.logs)    # LogsData(...)
    print(app.cache.status)  # StatusData(...)
    print(app.cache.backup)  # BackupData(...)
```
