我只使用带有JS脚本的index.html生成整个网站。
JS基于通过服务器端API接收的JSON数据创建HTML内容。这非常适合客户端,并使网站加载速度和交互速度非常快,但有一个障碍...当一个爬虫来索引页面时,它将看到一个空白页面。
显而易见的解决方案是提供包含所有页面的静态版本的XML站点地图。问题是......当每个页面只生成客户端而且所有逻辑和模板都是客户端时,如何生成每个页面的静态版本?
这不是一个新问题......我确信任何人在客户端动态生成页面都会遇到这个问题并解决了它,但我想在开始尝试解决这个问题之前我会问开发社区。< / p>
答案 0 :(得分:1)
Next.js使用Node.js内置的服务器端路由和渲染系统包装React,定义了一个标准接口,用于获取服务器和客户端上的页面数据,并附带一些开箱即用的功能,使其成为一个SSR和CSR Web应用程序的最佳选择(IMHO)。
哦......他们也有很棒的教程!
我已经设法通过使用PhantomJS从客户端输出生成静态页面,并在页面和所有JS完成加载/执行后捕获HTML输出。这种方法比我想要的慢,而且不太可能扩展,但它是我能想到的唯一选择。
该网站每天收到超过10,000个页面浏览量,超过8,000个唯一身份访问者,因此在创建新评论/帖子时会定期更新页面,然后将这些更改添加到队列中,该队列在单独的服务器中进行处理以生成静态页面与幻影。
我能想到的唯一另一种方法是创建一个Node.js进程,该进程使用相同的jsRender库并根据某些数据从模板文件构建HTML输出,但这样做很费时间不会生成动态网站创建的完全相同的输出。谷歌可能不赞同我提供的静态页面并不真正代表“普通”访问者可以看到的动态版本。
这似乎是一个无法解决的问题。要么我完全在服务器端生成页面,要么爬虫无法索引页面。 :(