【问题标题】:Is it possible to prerender before redirect?是否可以在重定向之前预渲染?
【发布时间】:2020-03-17 18:26:04
【问题描述】:

我正在使用 prerender.io 服务来预渲染我的 React 应用程序。 在应用程序中,我有一个过渡页面发送到 prerender.io 参数化元数据,然后重定向到应用程序的主页。

问题在于,该服务似乎使用其元数据而不是过渡性的元数据预呈现目标页面(应用程序的主页)。

问题:如何预渲染带有元数据的过渡页面?

【问题讨论】:

  • 到目前为止,我通过实验发现的唯一方法是将重定向超时设置为 5 秒或更长(小于该值对我不起作用)。
  • 嗨奥列格!您能否向我们发送一个您遇到这些问题的 URL 示例?我们很乐意看看,看看我们能提出什么建议! support@prerender.io
  • 嗨@Prerender.io。我已向 support@prerender.io 发送了一封电子邮件,其中包含有关该问题的示例详细信息。将在此处复制它,以便其他读者更好地理解该问题。
  • 链接示例:stage.eurekly.com/incentive-to-share/masters.shifus.1 如前所述,找到了一个解决方案(不完全满足一个想法),即在 5 秒内重定向(当前为链接实现)。该页面的目的是获取元数据以在 facebook 上以导师姓名作为参数共享(导师姓名由 url 中的最后一部分确定,因此在给定的示例中为 masters.shifus.1)。期望的结果是立即重定向,该共享链接将指向目标页面,但元数据将从发生重定向的页面中获取。

标签: reactjs redirect parameters metadata prerender


【解决方案1】:

因此,当 javascript 重定向立即发生时,Prerender 服务器认为页面仍在加载,因此在 javascript 重定向完成之前它不会检查元标记。

这里最好的解决方案是为 Prerender 浏览器延迟 5 秒左右的 javascript 重定向,但允许普通用户立即进行 javascript 重定向。

【讨论】:

  • 完成答案:Prerender 的重定向延迟实现为 if (window.navigator.userAgent.indexOf('prerender') >= 0) waitTime = 5000