我正在使用 prerender.io 向爬虫提供网站的“application/JS”版本(我的实例通过隐藏设置向爬虫提供 JS 版本)。
效果很好,但似乎 discourse 可能属于此类别:属于此类 …
但有些网页使用自定义加载流程或持续轮询,这可能会欺骗 Prerender 的逻辑;因此,它无法决定页面的就绪状态。
第一次 prerender 访问任何 discourse URL 时,它将超时(prerender 设置的 20 秒)。
页面可以正常渲染,只是 prerender.io 不知道页面已完全加载,因此它会“一直”尝试渲染页面,直到 20 秒结束,然后提供 HTML 版本。
如果爬虫再次请求页面,它将在 1 秒内(或稍多一点)提供页面——因为该 URL 的 HTML 版本已缓存。
……但这不切实际,因为有数千个 URL,每个 URL 首次访问时需要 20 秒,这是行不通的。
因此,我需要在 \u003chead\u003e 标签之后(并在页面完成后将变量设置为 true)添加以下内容:
\u003cscript\u003e window.prerenderReady = false; \u003c/script\u003e
我希望这能在整个网站上生效——希望这能让工作更轻松。
不确定这需要什么,但如果我错了,请告诉我——300 美元?400 美元?
用于提供 JavaScript 版本的代码?
这是您(@pfaffman)帮助我启用/调整过的隐藏网站设置“crawler_user_agents”。
编辑 我已从上述列表中删除了“bots”、“crawlers”和“spiders”。
pfaffman
(Jay Pfaffman)
5
prerender.io 是如何参与的? Discourse 将如何知道何时包含 <head> 标签?
哦,我认为 prerender 指的是现有的 <head> 标签,对吗?
我们需要将 <script> window.prerenderReady = false; </script> 添加到现有的 <head> 标签的正下方。
编辑 我也不确定他们是否需要将代码设置在 head 标签内,还是在 closing head 标签之后。
pfaffman
(Jay Pfaffman)
7
您是如何安装 prerender 以使其提供预渲染页面的?How to Install Prerender in 3 Easy Steps 上列出了三种方法。您使用了其中一种吗?
1 个赞
是的,我使用了 Cloudflare 中间件。
因此,Cloudflare 会将来自机器人的任何请求发送给 Prerender。
pfaffman
(Jay Pfaffman)
9
那么,您能提供一个 prerender API 调用,以返回您想要的 true/false 值吗?
<script> window.prerenderReady = false; </script>
1 个赞
我明白了,- 我阅读了API文档,这可能有点超出我的能力范围(但希望这能让任务更容易)。
angus
(Angus McLeod)
11
预算有点低,做这种事基本上是这样。修改提供给爬虫的内容可能比看起来要棘手。可能会出现各种问题。
就我个人而言,我有点怀疑首先这样做的明智性,但我相信你一定有你的理由。
我认为 Jay 指的是 discourse 客户端 API。你可以通过主题组件使用它来判断 Discourse 何时完全渲染。
你似乎对软件开发有些了解。我去年制作了一个关于 discourse 主题开发的入门课程,其中讨论了如何在主题中使用 API。它是免费且开源的。你可以从这里开始阅读:
你可能需要使用页面渲染时触发的前端事件。课程中的第一个 JavaScript 单元中就有一些示例:
2 个赞
感谢您的回复 Angus
我不确定是否需要这样做。爬虫已经获取了我 discourse 实例的 HTML 版本。
现在说还为时过早,但我相当乐观。这只是大量的 SEO 清理工作——Google 正在抓取一个全新的网站。我无法想象 Google 会根据非 JS 爬虫版本给出的排名,与实际用户体验相同的排名。
我首先需要完成的是将该代码放在 head 中。
然后,根据 prerender.io 的要求,实现这部分内容。
然后确保您仅在页面完成渲染时才将此变量设置为 true,此时 Prerender 可以安全地抓取内容。这可以通过一个在页面后期运行的异步调用来实现。然后 Prerender.io 将等待一小段时间,以确保所有调用都已完成并保存您的页面。
我将仔细阅读您提供的文档——感谢您提供这些文档。
1 个赞
justin
(Justin DiRose)
13
我不确定你看到了什么,但根据我们的经验,爬虫视图的排名相当不错。我们有客户报告说他们的社区排名超过了他们的主网站。
2 个赞
这可能仅仅是因为该网站拥有非常有价值的内容,并且算法忽略了“不良部分”。每个案例都不同。
从谷歌的角度来看,让爬虫版本像 JavaScript 版本一样进行排名是没有意义的(笼统地说)。
没有菜单、没有推荐话题、没有侧边栏链接、用户个人资料/徽章页面是 noindex 的,以及大量其他在爬虫版本中不可用的功能。
一旦结果出来,我将更新一个新话题。到目前为止,在 SERP 中的定位非常不稳定。
编辑 用户个人资料/徽章页面通过标头设置为 noindex。