Speculative Loading

Descrição

Este plugin adiciona suporte para a Speculation Rules API , que permite definir regras pelas quais certos URLs são pré-carregadas ou pré-montadas dinamicamente.

Veja o rascunho da especificação das Regras de Especulação WICG.

Por padrão, o plugin é configurado para pré-montar URLs da interface do WordPress quando o usuário interage com um link relevante. Isso pode ser personalizado por meio da seção “Carregamento especulativo” na tela de administração Configurações > Leitura.

Um filtro pode ser usado para excluir certos caminhos de URL de serem elegíveis para pré-carga e pré-montagem (veja a seção FAQ). Como alternativa, você pode adicionar a classe CSS no-prerender a qualquer link (tag <a>) que não deva ser pré-carregado. Veja a FAQ para mais informações.

Compatibilidade com navegadores

A API Speculation Rules (API de Regras para Especulação) é uma nova API da Web e a funcionalidade implementada neste plugin é compatível com navegadores baseados no Chromium, como Chrome, Edge ou Opera, usando a versão 121 ou superior. Outros navegadores, como Safari e Firefox, ignorarão a funcionalidade sem efeitos colatareis; eles simplesmente não se beneficiarão do carregamento especulativo. Observe que certas extensões de navegador podem desabilitar o pré-carregamento por padrão.

Este plugin era anteriormente conhecido como Speculation Rules.

Instalação

Instalação a partir do WordPress

  1. Vá em Plugins > Adicionar plugin.
  2. Procure por Speculative Loading.
  3. Instale e ative o plugin Speculative Loading.

Instalação manual

  1. Envie a pasta speculation-rules para o diretório /wp-content/plugins/.
  2. Vá para seção Plugins no menu administrativo do WordPress.
  3. Ative o plugin Speculative Loading.

Perguntas frequentes

Como posso evitar que determinados URLs sejam pré-carregados e pré-montados?

Nem todo o URL pode ser pré-montado de maneira razoável. A pré-montagem de conteúdo estático é normalmente confiável, no entanto, a pré-montagem de conteúdo dinâmico ou interativo, como uma página de saída de sessão, pode levar a problemas. Por esse motivo, certas páginas do WordPress, como /wp-login.php e /wp-admin/*, são excluídas da pré-carga e pré-montagem. Além disso, quaisquer URLs gerados com wp_nonce_url() (ou que contenham a variável de consulta _wpnonce) e links nofollow também são ignorados. Você pode excluir padrões adicionais de URL usando o filtro plsr_speculation_rules_href_exclude_paths.

O exemplo a seguir garante que URLs como https://example.com/cart/ ou https://example.com/cart/foo sejam excluídas da pré-carga e pré-montagem:

<?php
add_filter(
    'plsr_speculation_rules_href_exclude_paths',
    function ( array $exclude_paths ): array {
        $exclude_paths[] = '/cart/*';
        return $exclude_paths;
    }
);

Lembre-se de que, às vezes, pode ser útil excluir um URL da pré-montagem mas permitir que ele seja pré-carregado. Por exemplo, uma página com JavaScript do lado do cliente para atualizar o status do usuário provavelmente não deve ser pré-montada, mas seria razoável fazer a pré-carga.

Para esse propósito, o filtro plsr_speculation_rules_href_exclude_paths recebe o modo atual — “prefetch” (pré-carga) ou “prerender” (pré-montagem) — para fornecer exclusões condicionais.

O exemplo a seguir garante que URLs como https://example.com/products/... não possam ser pré-montadas, mas ainda permite que sejam pré-carregadas:

<?php
add_filter(
    'plsr_speculation_rules_href_exclude_paths',
    function ( array $exclude_paths, string $mode ): array {
        if ( 'prerender' === $mode ) {
            $exclude_paths[] = '/products/*';
        }
        return $exclude_paths;
    },
    10,
    2
);

Conforme mencionado acima, adicionar a classe CSS no-prerender a um link impedirá que ele seja pré-montado (mas não pré-carregado). Além disso, links com rel=nofollow não serão pré-carregados nem pré-montados porque alguns plugins adicionam isso a links não-idempotentes (links não-redundantes, por exemplo: adicionar ao carrinho); tais links idealmente devem ser botões que disparam uma solicitação POST ou pelo menos devem usar wp_nonce_url().

Há alguma consideração especial sobre o comportamento do carregamento especulativo?

Por razões de segurança, toda a funcionalidade de carregamento especulativo é desabilitada por padrão para usuários autenticados e para sites que não usam “pretty permalinks” (links permanentes amigáveis). Este último é o caso porque os plugins geralmente usam URLs com parâmetros de consulta personalizados para permitir que os usuários executem ações, e tais URLs não devem ser carregadas de maneira especulativa. Para sites sem links amigáveis, é impossível ou pelo menos extremamente complexo diferenciar entre quais parâmetros de consulta são comuns e quais são personalizados.

Se você estiver executando este plugin em um site sem links amigáveis (“pretty permalinks”) e tiver certeza de que não há parâmetros de consulta personalizados em uso que possam causar alterações de estado das páginas quando chamados, você pode optar por ativar o carregamento especulativo diretamente com o filtro plsr_enabled_without_pretty_permalinks:

<?php
add_filter( 'plsr_enabled_without_pretty_permalinks', '__return_true' );

Como isso irá impactar a análise e a personalização?

A pré-montagem pode afetar análises e personalizações.

Para o JavaScript do lado do cliente, é recomendado atrasar isso até que o pré-montador seja ativado (por exemplo, clicando no link). Algumas soluções (como o Google Analytics) já fazem isso automaticamente, veja Impacto nas análises. Além disso, iframes de origem cruzada não são carregados até a ativação, o que ainda pode evitar mais problemas aqui.

Especular com modo padrão “moderado” (moderate) diminui o risco de que uma página pré-montada não seja visitada pelo usuário e, portanto, evitará quaisquer efeitos colaterais de carregar tal página com antecedência. Em contrapartida, a especulação “ávida”(eager) aumenta o risco de que páginas pré-montadas não sejam vistas. Alternativamente, o plugin oferece especular apenas com o mouse/ponteiro clicado (modo “conservative”, conservador), o que reduz ainda mais este risco, e é uma opção para websites que não se importam em ter ganhos menores de desempenho.

Uma página pré-montada é vinculada à página que a chama, então a personalização pode já ser conhecida neste ponto e as alterações (por exemplo, navegar em outros produtos ou iniciar/encerrar uma sessão) geralmente exigem um novo carregamento de página e, portanto, um novo pré-montador, que levará isso em consideração. Mas definitivamente é algo para estar ciente e testar! As páginas pré-montadas podem ser canceladas removendo da página o elemento <script>com as regras de especulação, usando APIs DOM padrão do JavaScript, caso isso seja necessário quando o estado mudar sem uma nova carga de página.

Onde posso enviar os meus comentários sobre o plugin?

Comentários e sugestões são encorajados e muito apreciados, especialmente porque este plugin pode conter futuras funcionalidades para o núcleo do WordPress. Se tiver sugestões ou pedidos de novas funcionalidades, pode submetê-los como um issue no repositório GitHub da equipe de desempenho do WordPress. Se precisar de ajuda para resolver problemas ou tiver uma pergunta sobre o plugin, por favor crie um novo tópico no nosso fórum de suporte.

Onde posso relatar erros de segurança?

A equipe de desempenho e a comunidade WordPress levam as brechas de segurança a sério. Apreciamos os seus esforços para divulgar de forma responsável as suas descobertas e faremos nosso melhor para reconhecer as suas contribuições.

Para comunicar um problema de segurança, visite o programa WordPress HackerOne.

Como eu posso contribuir com o plugin?

Contribuições são sempre bem-vindas! Saiba mais sobre como se envolver com o projeto, consulte o Manual da equipe de desempenho do WordPress

Avaliações

16 abril, 2025
Although I have not tried the plugin on live sites, my testing on 3-4 dev boxes leaves me impressed. I can see and feel the speed increase I have a couple of heavy sites and can see this plugin fitting right into the flow. Will get on it soon 🙂
19 julho, 2024 1 resposta
I was using another plugin which does a similar job but Speculative Loading appears to be substantially quicker. Using on about 10 sites and no issues. Thank you
27 maio, 2024
Es verkürzt die Ladzeit für einen Benutzer sichtbar, auch wenn im Hintergrund die Seite gleichschnell geladen wird, so fühlt es sich für einen Benutzer extrem schnell an.
Leia todas as 18 avaliações

Colaboradores e desenvolvedores

“Speculative Loading” é um programa de código aberto. As seguintes pessoas contribuíram para este plugin.

Colaboradores

Speculative Loading” foi traduzido para 11 localidades. Agradecemos aos tradutores por suas contribuições.

Traduzir o “Speculative Loading” para seu idioma.

Interessado no desenvolvimento?

Navegue pelo código, consulte o repositório SVN ou assine o registro de desenvolvimento por RSS.

Registro de alterações

1.5.0

Melhorias

  • Adiciona o suporte à API de carregamento especulativo do núcleo do WP, carregando a implementação da API do próprio plugin somente se necessário. (1883)

1.4.0

Melhorias

  • Implementa avaliações no carregamento especulativo para um comportamento mais seguro. (1784)

1.3.1

Correções de erros

  • Verifica se o parâmetro “rel” contém “nofollow” (em vez de ser somente “nofollow”) ao excluir do carregamento especulativo. (1232)

1.3.0

Melhorias

  • Evita o carregamento especulativo de links para os diretórios de envios, conteúdos, plugins, modelos ou folhas de estilo. (1167)
  • Facilita integrar o carregamento especulativo em outros plugins e/ou temas. (1159)
  • Melhora na qualidade geral do código com verificações de análise estática mais rigorosas. (775)
  • Incrementa o requisito mínimo do PHP para 7.2. (1130)

1.2.2

Correções de erros

  • Corrige a composição de caminhos de exclusão “href” a fim de considerar em conta a codificação JSON e URLs Site e Home discrepantes. (1164)

Documentação

  • Atualiza o arquivo Readme com informações de compatibilidade dos navegadores e uma seção de perguntas frequentes sobre análises e personalização. (1155)

1.2.1

Melhorias

  • Adiciona um item de configurações aos links de ações do plugin Speculative Loading. (1145)
  • Incrementa o versão mínima do PHP para 7.2. (1130)

Correções de erros

  • Exclui URLs _wpnonce nas regras de especulação. (1143)
  • Exclui links “rel=nofollow” de serem pré-carregados e pré-montados. (1142)

1.2.0

  • Adiciona um inexistente uninstall.php para excluir as opções do plugin do banco de dados. (1128)

1.1.0

  • Permite a exclusão de padrões de URL da pré-montagem ou da pré-carga, especificamente. (1025)
  • Renomeia o plugin para “Speculative Loading”. (1101)
  • Adiciona a tag geradora do Speculative Loading. (1102)
  • Incrementa a versão mínima exigida do WP para 6.4. (1062)
  • Atualização testada até o WordPress 6.5. (1027)

1.0.1

  • Remove prefixos de caminhos de arquivo e restringe-os a ser um nome de caminho simples nas regras de especulação. (951)
  • Força o suporte ao HTML5 do tema ao imprimir scripts JSON. (952)
  • Adiciona as imagens do ícone e testeira para o diretório de plugins. (987)

1.0.0

  • Lançamento inicial do plugin Speculative Loading como um plugin independente. ( 733 )