Javascript 一页式网站~最佳实践&;索引和社交媒体共享的发展方向

Javascript 一页式网站~最佳实践&;索引和社交媒体共享的发展方向,javascript,php,web-applications,asynchronous,single-page-application,Javascript,Php,Web Applications,Asynchronous,Single Page Application,在我提问之前,这里有一个元问题:我可以在这里发布这个问题吗?这是关于最佳实践,但问题相当具体。我看没有比StackExchange更好的网站可以问这个问题 我即将开始开发一种单页网站。它将包括文章等的集合视图和所述文章的更详细视图,这些视图将以覆盖方式异步加载。所以它不是一个真正的异步单页站点,我不会使用angular或sorts,但为了简单起见,我将把它称为单页站点 新出现的问题是,该网站将严重依赖社交媒体共享,需要通过搜索引擎爬虫进行适当的索引 不用说,当我在异步加载的覆盖中阅读一篇有趣的文

在我提问之前,这里有一个元问题:我可以在这里发布这个问题吗?这是关于最佳实践,但问题相当具体。我看没有比StackExchange更好的网站可以问这个问题

我即将开始开发一种单页网站。它将包括文章等的集合视图和所述文章的更详细视图,这些视图将以覆盖方式异步加载。所以它不是一个真正的异步单页站点,我不会使用angular或sorts,但为了简单起见,我将把它称为单页站点

新出现的问题是,该网站将严重依赖社交媒体共享,需要通过搜索引擎爬虫进行适当的索引

不用说,当我在异步加载的覆盖中阅读一篇有趣的文章时,我决定将URL复制粘贴到社交网络上;这东西不行

我正在寻找url的转义部分,以便可以链接到覆盖页面。在浏览第1条时,覆盖层会将客户端url重写为

但是,现在爬行成为一个问题,因为机器人(facebook、google等)不执行js,也不等待异步内容加载。

它们确实有一个唯一的用户代理。因此,一种解决方案是嗅探用户代理并向机器人提供一个与人类客户端不同的html文件

我能想到的另一个解决方案是将URL设置为应用程序的实际状态,如下例所示:

  • 当用户浏览一篇文章时,该文章将被异步加载,url将被重写为
  • 然后,当用户或bot直接请求此url时(因为它已被共享或其他),后端将在单个同步加载中吐出生成该应用程序状态所需的所有html,因此,机器人可以索引页面用户将能够以异步方式继续浏览
此解决方案要求后端的工厂/页面呈现部分以与客户端javascript重写URL完全相同的方式工作

作为一个单页网站的新手,我认为这是一个可行的解决方案

下面是我的问题:

  • 这是一个可行的解决方案吗?如果是的话,是否有一些事情应该以不同的方式来做,或者在我错过的道路上是否有任何重大的坎坷
  • …还是我完全看错了方向,有没有更明显、更简单的方法来解决这个项目

我仍然在规划项目的总体结构,因此我仍然相当灵活&因此,您需要的问题是使ajax可爬行。幸运的是

简短的版本是,您使用如图所示的散列爆炸片段(
#!article/1
),在爬网时,bot会要求您这样做(使用
#!
后面的部分作为名为
u转义片段
的查询参数),然后返回相关内容。详情请参阅链接

他们给出的示例都有
key=value
样式片段,例如:

http://example.com#!article=21
…机器人要求如下:

http://example.com?_escaped_fragment_=article=21

…然后您将文章内容返回到bot。

谢谢,有足够的文档让我开始学习!