【发布时间】:2017-08-04 10:52:48
【问题描述】:
由于 Angular Universal 很长一段时间内不会出现在 CLI 中,因此我必须使用 prerender.io 来让 SEO 正常工作。然而,经过一些测试,它似乎并没有那么好,因为它似乎没有等待延迟加载的模块,所以 SEO 仍然失败。
在他们的网站this location 上,他们这样说:
您的页面是否仅部分呈现?
我们的 Prerender 服务器会尽力确定页面何时完成 通过计算飞行中的请求数来加载。一旦数 飞行中的请求数达到零,我们等待一小段时间,然后 然后保存 HTML。如果这太早保存页面,您可以使用 我们的 window.prerenderReady 标志通知服务器您的页面是 可以保存了。
把它放在你的 HTML 中:
<script> window.prerenderReady = false; </script>当我们看到 window.prerenderReady 设置为 false 时,我们会等到它 设置为 true 以保存 HTML。当您的页面将是时执行此操作 准备好(通常在 ajax 调用之后):
window.prerenderReady = true;
这是我不明白如何去做的地方。由于 Angular 从模板中删除了脚本标签(不确定这只是 CLI 行为还是 Angular 本身),我无法设置初始脚本标签。我也无法弄清楚如何在组件类的模板脚本标签内更新window 属性prerenderReady,因为我不能只使用window.prerenderReady = true 并期望它能够工作,因为必须将脚本添加到模板。
有没有人设法弄清楚这一点或对我如何实现这一点有任何想法?
【问题讨论】:
-
你在这方面取得了成功吗?我也面临同样的问题。
-
@GirishRathod 我做了,但如果您的服务器配置正确,则不必使用此方法。
-
我可以使用什么?请您有正确的配置示例,以便我可以使用。
-
@GirishRathod 我自己没有修复它,所以我不知道它是如何完成的:/对不起。
标签: javascript angular typescript seo prerender