在 Angular 4/5 中,是不是可以只预呈现来自 Facebook 和 Twitter 爬虫的请求,而不是预呈现每个请求

Posted

技术标签:

【中文标题】在 Angular 4/5 中,是不是可以只预呈现来自 Facebook 和 Twitter 爬虫的请求,而不是预呈现每个请求【英文标题】:In Angular 4/5, instead of prerendering each request, is it possible to prerender only request that coming from Facebook and Twitter crawler在 Angular 4/5 中,是否可以只预呈现来自 Facebook 和 Twitter 爬虫的请求,而不是预呈现每个请求 【发布时间】:2018-12-05 05:19:21 【问题描述】:

在 Angular 4/5 中,不是预先呈现每个请求,而是可以只预先呈现来自 Facebook 和 Twitter 爬虫的请求,即当用户在 Facebook 或 Twitter 上分享这些 URL 时。 我在想我们是否可以使用反向代理来实现这样的事情,如果请求来自 Facebook 或 Twitter 机器人,那么我可以从预渲染 Angular 代码的不同环境中为它们提供服务。

我有一个无法缓存的动态网站,而且由于流量过大,预渲染每个请求的效率很低。

【问题讨论】:

【参考方案1】:

好的,所以我找到了 2 个解决方案。

    Google、Facebook、Twitter 等爬虫都有自己的用户代理,即
谷歌机器人 冰机器人 推特机器人 facebookexternalhit 联动机器人

因此,在 apache 或 nginx 中,我们可以编写条件以仅预渲染来自机器人的请求。

    以任何语言创建一个应用程序,仅动态服务于 Angular 应用程序的 index.html 文件,您可以在运行时根据请求的 url 在其中嵌入 og 元标记。

    希望这个解决方案对某人有所帮助。

【讨论】:

以上是关于在 Angular 4/5 中,是不是可以只预呈现来自 Facebook 和 Twitter 爬虫的请求,而不是预呈现每个请求的主要内容,如果未能解决你的问题,请参考以下文章

自定义 Angular 组件不会在模板中呈现为 TR

如何动态呈现 pug 文件而不是使用静态 angular-cli index.html?

Django 查询集。如何只预取唯一的?

我可以只在使用 Angular2 Universal 的客户端中运行组件方法吗?

Angular 2:如何在不向用户显示标签的情况下从 JSON 响应呈现 HTML? [复制]

如何检查数据是不是已完成加载以使用异步管道 Angular 8