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.
- Compatibilidade de navegadores com a Speculation Rules API em geral
- Informações sobre o suporte à sintaxe das regras de documentos usadas pelo plugin
Este plugin era anteriormente conhecido como Speculation Rules.
Instalação
Instalação a partir do WordPress
- Vá em Plugins > Adicionar plugin.
- Procure por Speculative Loading.
- Instale e ative o plugin Speculative Loading.
Instalação manual
- Envie a pasta
speculation-rules
para o diretório/wp-content/plugins/
. - Vá para seção Plugins no menu administrativo do WordPress.
- 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 comwp_nonce_url()
(ou que contenham a variável de consulta_wpnonce
) e linksnofollow
também são ignorados. Você pode excluir padrões adicionais de URL usando o filtroplsr_speculation_rules_href_exclude_paths
.O exemplo a seguir garante que URLs como
https://example.com/cart/
ouhttps://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 comrel=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 usarwp_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
Colaboradores e desenvolvedores
“Speculative Loading” é um programa de código aberto. As seguintes pessoas contribuíram para este plugin.
ColaboradoresSpeculative 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 )