【发布时间】:2013-11-15 09:23:45
【问题描述】:
这个问题可能与确切的软件堆栈、框架或语言无关。
对于我目前的项目,我们正在使用AngularJS构建具有恒定入口页面以加载真实数据和渲染的前端,这对于CDN来说很容易,并且有利于从浏览器端快速加载。但是对于某些社交功能,这样的架构师可能会导致一些问题。例如,当您将感兴趣的链接粘贴到 Facebook 门户进行分享时,Facebook 将抓取您的页面并显示预览。如果着陆页为空,则无法进行此类预览。
(听说Google+最近支持在服务器端渲染javascript逻辑,然后发回预览,但显然这不是对其他类似服务的常见支持。Google.com也支持索引基于js的单页应用程序。)
有没有更好的解决方案来优雅地解决这个问题,而不是回退到包含真实数据的动态页面?我在理解这个问题时是否遗漏了什么?
========
...我什至在想,对于标识为 FB 请求(如用户代理)的请求,将其重定向到一个特殊的网关,该网关像 PhantomJS 一样包装某物,获取页面,在服务器端呈现它,然后发送将 DOM 树快照作为内容返回给 FB 以生成预览。但我也怀疑这是一个好的方向。 : (
【问题讨论】:
-
如果您使用节点,我创建了一个模块,可以帮助您在服务器中呈现正确的页面供 fb 或 google 阅读。 npmjs.org/package/googlebot
-
嗨@dvidsilva,这很酷。我去看看,谢谢。
-
嗨@dvidsilva,如果google bot 可以作为实际Web 应用程序的反向代理,那就太好了。如果前端网络服务器识别出机器人请求(如通过用户代理检查),则将请求路由到 googlebot,然后 googlebot 从真实应用服务器获取实际页面。不确定是否支持:)
-
会,但不会更难实现,这是一些人建议的不同方法,但因为我没有任何模板,或者我没有做任何这些服务器中的进程使用幻像更容易渲染。任何情况都是不同的。
标签: javascript facebook angularjs facebook-graph-api