immafrady/blog

如何让首屏SSR的框架支持完全SSR?

Opened this issue · 0 comments

之前的官网项目,因为SEO的需求,在规划时就选择了服务端渲染的技术架构。
因为因为以Vue为基础的第三方支持SSR的框架不多,所以选择了早有所闻但又没接触过的Nuxt.js。

不得不说Nuxt的坑还不少,首当其冲就是我们的SEO效果并不好……

虽说有可能是因为需求方时常提出修改文案的要求,甚至一天多改,每隔几小时就要上线一次。不过在渐渐稳定下来的一周后,CTO惊人地发现,好像百度爬虫一次都没有进来过。

CTO焦头烂额,甚至质疑起我到的有没有使用asyncData

image

当然AsyncData肯定是有用的,而且因为我们有个bug就是踩了它的坑😒
在首页点击文章链接,可以正常跳转;但是假如在文章当前页面刷新,又或者是直接请求网址的话,直接服务器报错,说那个地址没有对应的文件🙃

因此发现原来Nuxt的SSR并非纯粹的SSR,而是首屏SSR,后续跳转通过浏览器请求。所以在AsyncData中的请求是区分了环境的……

当然这样来做,好处是有的:兼顾了直接Get页面的抓取,以及服务器压力的缓解。

不过这也可能导致爬虫在网站内做跳转动作时,并不能成功跳过去,因为那是ajax请求,拿到的只有参数而非页面……

=======================

不过在研究了豆瓣和知乎等内容输出网址之后,发现其实解决这个问题的解决方案可能真的很简单……

那就是通过target="_blank"进行跳转,强行新开一个页面,这时的页面绝对是服务端渲染出来的。😂😂