Preciso implementar "window.prerenderReady" na minha instância [TRABALHO PAGO]

Estou usando prerender.io para servir a versão “application/JS” do site para os rastreadores (minha instância serve a versão JS para rastreadores através de uma configuração oculta)

Está funcionando bem, mas parece que o Discourse pode se enquadrar nesta categoria

mas algumas páginas da web usam fluxos de carregamento personalizados ou polling constante que podem enganar a lógica do Prerender; assim, ele falha em tomar uma decisão sobre a prontidão da página.

Na primeira vez que o prerender acessa qualquer URL do Discourse, ele atingirá o tempo limite (20 segundos definidos pelo prerender)
A página é renderizada corretamente, é apenas que o prerender.io não sabe que a página está totalmente carregada, então ele “continua” tentando renderizar a página, até que os 20 segundos acabem, então ele serve a versão HTML.

Se o rastreador solicitar a página novamente, ele servirá a página em 1 segundo (mais ou menos) - pois há uma versão HTML do URL no cache.

…mas isso não é prático, pois existem milhares de URLs e 20 segundos para cada URL (na primeira vez que é acessado) não funcionará.

Portanto, precisarei que o abaixo seja adicionado logo após a tag <head> (e quando a página estiver pronta, definir a variável como true)

<script> window.prerenderReady = false; </script>

Gostaria que isso funcionasse em todo o site - espero que isso facilite o trabalho.

Não tenho certeza do que isso implica, mas se eu estiver errado, por favor me avise - $300? $400?

Alguém tem algum feedback sobre isso?

Talvez haja um arquivo principal que eu possa editar enquanto isso

Você tem o código que está usando para fazer isso em algum lugar?

1 curtida

O código para servir a versão JS?

Foi a configuração oculta do site “crawler_user_agents” que você (@pfaffman) me ajudou a ativar/ajustar.

Editar Removi “bots”, “crawlers” e “spiders” da lista acima.

Como o prerender.io está envolvido? Como o Discourse saberia quando incluir a tag \u003chead\u003e?

Ah, acho que o prerender está se referindo à tag \u003chead\u003e existente, certo?

Para que possamos adicionar o \u003cscript\u003e window.prerenderReady = false; \u003c/script\u003e logo abaixo da tag \u003chead\u003e existente.

Editar Também não tenho certeza se eles precisam que o código seja definido dentro das tags head ou após a tag head de fechamento.

Como você instalou o prerender para que ele sirva as páginas prerenderizadas? Três métodos estão listados em How to Install Prerender in 3 Easy Steps. Você usou um deles?

1 curtida

Sim, usei o middleware do Cloudflare.

Então o Cloudflare recebe qualquer solicitação de bots e as envia para o Prerender.

Então, você pode fornecer uma chamada de API para o prerender que retornará o valor true/false que você deseja em

 <script> window.prerenderReady = false; </script>
1 curtida

Ah, entendi. - fiz alguma leitura sobre a API e isso pode ser um pouco demais para mim (mas espero que isso facilite a tarefa)

O orçamento é um pouco baixo para esse tipo de coisa, basicamente. Modificar o que é servido aos crawlers pode ser mais complicado do que parece. Vários problemas podem surgir.

Pessoalmente, estou um pouco cético quanto à sabedoria de fazer isso em primeiro lugar, mas tenho certeza de que você tem seus motivos.

Acho que Jay quer dizer a API do cliente discourse. Você poderia usá-la através de um componente de tema para saber quando o Discourse está totalmente renderizado.

Você parece estar um tanto familiarizado com o desenvolvimento de software. Eu fiz um pequeno curso introdutório sobre desenvolvimento de temas do discourse no ano passado, que inclui uma discussão sobre como usar a API em um tema. É gratuito e de código aberto. Você pode lê-lo começando aqui:

Você provavelmente precisará usar um evento de frontend que é acionado quando a página é renderizada. Existem alguns exemplos disso quando você chega à primeira unidade de javascript no curso

2 curtidas

Obrigado pela resposta, Angus

Não tenho certeza se é isso que precisa ser feito. Os rastreadores já estão recebendo uma versão HTML da minha instância do Discourse.

É muito cedo para dizer, mas estou bastante otimista. É apenas uma grande limpeza de SEO - o Google está rastreando um site totalmente novo. Eu simplesmente não consigo imaginar o Google classificando a versão do site para rastreadores sem JS e dando o mesmo ranking da experiência real do usuário.

A primeira parte que preciso fazer é apenas colocar esse código no head.

Em seguida, é implementar esta parte de acordo com o prerender.io.

Em seguida, certifique-se de definir essa variável como true apenas quando sua página terminar de renderizar e for seguro para o Prerender capturar o conteúdo. Isso é possível em uma chamada assíncrona que é executada bem no final da sua página. O Prerender.io aguardará um curto período para garantir que todas as chamadas sejam concluídas e salvará sua página.

Estarei revisando a documentação que você forneceu - obrigado por isso.

1 curtida

Não tenho certeza do que você está vendo, mas em nossa experiência, a visualização do rastreador classificou os sites muito bem. Tivemos clientes relatando que sua comunidade superou seu site principal.

2 curtidas

Pode ser apenas que o site tenha conteúdo muito valioso e o algoritmo esteja ignorando as “partes ruins”. Cada caso é diferente.

Não faria sentido para o Google classificar a versão do rastreador como se fosse a versão JS. (no sentido geral)

Não há menu, nem tópicos sugeridos, nem links de canal, páginas de perfil/emblemas do usuário estão noindex, e uma tonelada de outros recursos que simplesmente não estão disponíveis na versão do rastreador.

Atualizarei com um novo tópico assim que os resultados chegarem. Até agora, o posicionamento nos SERPs é muito errático.

editar páginas de perfil/emblemas do usuário estão noindex via cabeçalhos