Depurar serviços em segundo plano

Kayce Basques
Kayce Basques
Sofia Emelianova
Sofia Emelianova

A seção Serviços em segundo plano do Chrome DevTools é um conjunto de ferramentas para as APIs JavaScript que permite que seu site envie e receba atualizações mesmo quando um usuário não está com o site aberto. Um serviço em segundo plano é funcionalmente semelhante a um processo em segundo plano.

A seção Serviços em segundo plano permite depurar os seguintes serviços em segundo plano:

O Chrome DevTools pode registrar eventos de busca, sincronização e notificação por três dias, mesmo quando o DevTools não está aberto. Isso ajuda a garantir que os eventos sejam enviados e recebidos conforme esperado.

Além dos eventos de serviço em segundo plano, o DevTools pode:

Busca em segundo plano

A API Background Fetch permite que um service worker faça o download de recursos grandes, como filmes ou podcasts, de maneira confiável como um serviço em segundo plano. Para registrar eventos de busca em segundo plano por três dias, mesmo quando o DevTools não estiver aberto:

  1. Abra o DevTools, por exemplo, nesta página de demonstração.
  2. Navegue até Aplicativo > Serviços em segundo plano > Busca em segundo plano e clique em Gravar. Record.

    O painel Busca em segundo plano.

  3. Na página de demonstração, clique em Armazenar recursos localmente. Isso aciona uma atividade de busca em segundo plano. O DevTools registra os eventos na tabela.

    Um registro de eventos no painel Busca em segundo plano.

  4. Clique em um evento para ver os detalhes no espaço abaixo da tabela.

  5. Feche o DevTools e deixe a gravação em execução por até três dias. Para interromper a gravação, clique em "Pare", Stop.

Sincronização em segundo plano

A API Background Sync permite que um service worker off-line envie dados a um servidor assim que uma conexão de Internet confiável for restabelecida. Para registrar eventos de sincronização em segundo plano por três dias, mesmo quando o DevTools não estiver aberto:

  1. Abra o DevTools, por exemplo, nesta página de demonstração.
  2. Navegue até Aplicativo > Serviços em segundo plano > Sincronização em segundo plano e clique em Gravar. Gravar.

    Painel de sincronização em segundo plano.

  3. Na página de demonstração, clique em Register background sync para registrar o respectivo service worker e clique em Allow quando solicitado.

    O registro do service worker é uma atividade de sincronização em segundo plano. O DevTools registra os eventos na tabela.

    Um registro de eventos no painel "Sincronização em segundo plano".

  4. Clique em um evento para ver os detalhes no espaço abaixo da tabela.

  5. Feche o DevTools e deixe a gravação em execução por até três dias. Para interromper a gravação, clique em "Pare", Stop.

(Experimental) Mitigações de rastreio por redirecionamento

O experimento com mitigações de rastreio por redirecionamento no Chrome permite identificar e excluir o estado de sites que parecem executar o rastreamento entre sites usando a técnica de rastreamento de rejeições. É possível forçar manualmente as mitigações de rastreamento e conferir uma lista de sites com estados excluídos.

Para forçar mitigações de rastreamento, faça o seguinte:

  1. Bloquear cookies de terceiros no Chrome Navegue até Menu de três pontos. > Configurações > e na segurança. Privacidade e segurança > Cookies e outros dados do site > Botão de opção marcado. Bloquear cookies de terceiros.
  2. Em chrome://flags, defina o experimento Mitigações de rastreio por redirecionamento como Ativadas com exclusão.
  3. Abra o DevTools, por exemplo, na página de demonstração (link em inglês) e navegue até Application > Background Services > Mitigações de rastreio por redirecionamento.
  4. Na página de demonstração, clique em um link de devolução e aguarde (10 segundos) para que o Chrome registre a rejeição. A guia Issues avisa sobre uma exclusão de estado que vai acontecer em breve.
  5. Clique em Forçar execução para excluir o estado imediatamente.

As mitigações de rastreio por redirecionamento listam uma exclusão de estado.

Notificações

Depois que um service worker recebe uma mensagem push de um servidor, usa a API Notifications para exibir os dados a um usuário. Para registrar notificações por três dias, mesmo quando o DevTools não estiver aberto:

  1. Abra o DevTools, por exemplo, nesta página de demonstração.
  2. Navegue até Aplicativo > Serviços em segundo plano > Notificações e clique em Gravar. Record.

    O painel Notificações.

  3. Na página de demonstração, clique em Programar notificação e em Permitir quando solicitado.

  4. Aguarde a notificação aparecer. O DevTools registra os eventos de notificação na tabela.

    Um registro de eventos no painel Notificações.

  5. Clique em um evento para ver os detalhes no espaço abaixo da tabela.

  6. Feche o DevTools e deixe a gravação em execução por até três dias. Para interromper a gravação, clique em "Pare", Stop.

Carregamentos especulativos

Os carregamentos especulativos permitem o carregamento de página quase instantâneo com base em regras de especulação definidas por você. Isso permite que seu site faça a pré-busca e pré-renderização da maioria das páginas acessadas.

A pré-busca busca um recurso com antecedência, e a pré-renderização vai além e renderiza a página inteira em um processo oculto de renderização de segundo plano.

É possível depurar carregamentos especulativos na seção Aplicativo > Serviços em segundo plano > Carregamentos especulativos. A seção contém três visualizações:

  • Carregamentos especulativos. Contém o status especulativo da página atual, o URL atual, as páginas que a página atual tenta carregar especulativamente e os status delas.
  • Regras. Contém os conjuntos de regras da página atual no painel Elementos e o status geral das especulações.
  • Especulações. Contém uma tabela com informações sobre as tentativas de carregamento especulativo e os status delas. Em caso de falha em uma tentativa, clique nela na tabela para consultar informações detalhadas e o motivo da falha.

Tente depurar os carregamentos especulativos nesta página de demonstração:

  1. Abra o DevTools na página e acesse Aplicativo > Serviços em segundo plano > Carregamentos especulativos. Se não for possível visualizar carregamentos especulativos iniciados pela página, atualize-a.

    Os URLs carregados especulativamente por esta página, dois sucessos e uma falha.

  2. A página inicial da demonstração pré-renderiza duas páginas e não faz a pré-renderização de uma. Clique em Acessar todas as especulações.

  3. Em Especulações, selecione a especulação com o status Falha para conferir o Motivo da falha na seção com informações detalhadas na parte de baixo.

    A especulação com falha selecionada.

    Nesse caso, a pré-renderização falhou porque não há uma página /next3.html no site.

  4. Abra a seção Regras e clique em Status para ver o conjunto de regras na parte inferior. Ao clicar no link Conjunto de regras, você acessa o painel Elementos e mostra onde a regra de especulação está definida.

    A seção "Regras" com o link para o conjunto de regras.

Para um tutorial mais detalhado, consulte Como depurar regras de especulação.

Mensagens push

Para exibir uma notificação push a um usuário, um service worker precisa primeiro usar a API Push Message para receber dados de um servidor. Quando o service worker estiver pronto para exibir a notificação, ele usará a API Notifications. Para registrar mensagens push por três dias, mesmo quando o DevTools não estiver aberto:

  1. Abra o DevTools, por exemplo, nesta página de demonstração.
  2. Navegue até Aplicativo > Serviços em segundo plano > Mensagens push e clique em Gravar. Registro.

    O painel "Push Messaging".

  3. Na página de demonstração, alterne para Ativar notificações push, clique em Permitir quando solicitado, digite e envie uma mensagem. O DevTools registra eventos de notificação push na tabela.

    Um registro de eventos no painel de mensagens push.

  4. Clique em um evento para ver os detalhes no espaço abaixo da tabela.

  5. Feche o DevTools e deixe a gravação em execução por até três dias. Para interromper a gravação, clique em "Pare", Stop.

API Reporting

Alguns erros acontecem apenas na produção. Você nunca os vê localmente ou durante o desenvolvimento porque usuários reais, redes e dispositivos mudam o jogo.

Por exemplo, digamos que seu novo site dependa de software de terceiros que usa document.write() para carregar scripts essenciais. Novos usuários em todo o mundo abrem o site, mas é possível que a conexão deles seja mais lenta do que a anterior. Você não reconhece, seu site começa a apresentar falhas porque o Chrome intervém contra document.write() em redes lentas. Outra opção é ficar de olho nas APIs descontinuadas ou que serão desativadas em breve na sua base de código.

A API Reporting foi criada para ajudar você a monitorar chamadas de API descontinuadas, violações de segurança da sua página e muito mais. Você pode configurar a geração de relatórios conforme descrito em Monitorar seu aplicativo da Web com a API Reporting.

Para visualizar os relatórios gerados por uma página:

  1. Acesse chrome://flags/#enable-experimental-web-platform-features, defina Recursos experimentais da Plataforma Web como Ativado e reinicie o Chrome.
  2. Abra o DevTools e acesse Aplicativo > Serviços em segundo plano > API Reporting. Por exemplo, confira os relatórios nesta página de demonstração.

    Relatórios listados na API Reporting

A guia API Reporting é dividida em três partes:

  • A tabela Relatórios com as seguintes informações sobre cada relatório:
    • URL que gerou a geração do relatório
    • Tipo de violação
    • Status do relatório
    • Endpoint de destino
    • Carimbo de data/hora Gerado em
    • Denunciar Corpo
  • A seção de visualização do Corpo do relatório. Para visualizar o corpo de um relatório, clique nele na tabela de relatórios.
  • A seção Endpoints com uma visão geral de todos os endpoints configurados no cabeçalho Reporting-Endpoints.

Status do relatório

A coluna Status informa se o Chrome enviou o relatório, se está prestes a enviá-lo ou se falhou.

Status Descrição
Success O navegador enviou o relatório, e o endpoint respondeu com um código de êxito (200 ou outro código de resposta de êxito 2xx).
Pending O navegador está tentando enviar o relatório.
Queued O relatório foi gerado e o navegador ainda não está tentando enviá-lo. Elas aparecem como Queued em um destes dois casos:
  • O relatório é novo, e o navegador está aguardando para ver se vai chegar mais relatórios antes de tentar enviá-lo.
  • O relatório não é novo. O navegador já tentou enviar esse relatório, mas falhou, e está aguardando para tentar novamente.
MarkedForRemoval Depois de tentar novamente por um tempo (Queued), o navegador parou de tentar enviar o relatório e, em breve, o removerá da lista de relatórios a serem enviados.

Os relatórios são removidos depois de algum tempo, mesmo que não sejam enviados.