Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

现代前端框架与 SEO

  记得去年年初我第一次喷 Angular 的时候喷的就是它在 SEO 方面的问题 。当时我还在做创业项目,非常重视 SEO。看到 Angular 那熊样我就完全没有选择它的念头。但现在想想,这个问题确实是可以解决的。而且这也不是 Angular 的问题,而是前后端分离的问题。
  当我们对项目做完全的前后端分离之后,前端程序就只剩下一个壳,所有的数据都是通过接口从后端调取的。这意味着什么?意味当我们发布一个前端项目时,只需要一个简易的 http 服务器即可跑起来(只需要支持 GET 方法,分析路径取文件返回即可)。而这样一个简易的 http 服务,用 C++ 写只要 100 行代码不到就能搞定(以前开过 http 服务器的坑,深有体会)。或者使用 CDN 服务的话,把前端程序交给 CDN 服务器托管即可,自己甚至不需要为前端项目提供服务器。 前端项目变成像 App 一样的东西,这显然是颠覆了传统 Web 后端渲染的模式,这对于爬虫而言简直是个灾难。
  了解了前端项目的现状之后我们再来聊聊蜘蛛吧。当有人说「说搜索引擎不会收录异步加载的数据」时,必定有人出来吐槽说「谷歌早就可以解析 Ajax 请求了」。这个对话我已经听到过不止一次了。前者的信息还停留在 09 年,因为以前蜘蛛确实只考虑网页的原始源,不会理睬页面 JavaScript 生成的内容。而后者显然是没接触过 SEO 方面的工作。因为做 SEO 的人都知道就算蜘蛛会看你的内容也未必会收录,而且即便收录了也未必会分配权重。网页原始源的权重远高于动态生成的内容,即便谷歌支持解析 Ajax 请求,数据分配不到权重也没用。SEO 远比一般人想象的要复杂,它是一个职业,不是单纯的码农和产品狗能搞定的。我以前创业的时候经常和全职搞 SEO 的人打交道,所以才会知道一些奇奇怪怪的事情。
  扯完 SEO 再回到现在的前端项目来看,如果我们把所有前端资源都直接丢到 CDN 或一个简易 http 服务器上肯定是会被蜘蛛嫌弃的。然而所有现代前端框架的一致目标都是组件化,无论 Angular、React 还是 Polymer。而且这些框架显然都已经将「前后端分离」作为标配了,所以为了 SEO 就必须做一些奇怪的事。比如后端开个服务来渲染这些前端框架以便爬虫抓取(这是目前比较靠谱的方案);或者后端单独做一份后端渲染的纯数据版提供给爬虫(这很容易被爬虫判定为作弊,强烈不推荐);最后就是使用一种可以在后端解析的模板语言,使前端程序在后端可以同构执行(这是第一种方案的改进版,但是目前没有成熟的解决方案)。
  我觉得现在的蜘蛛已经跟不上 Web 发展的速度了。这也难怪,近几年 Web 发展的速度快得让我觉得只要一周不上网就要和世界脱轨了一样。将来的 Web 会往 App 的方向发展,想象一下让蜘蛛去抓取 App 的数据,又要像以前的 Web 爬虫一样防止作弊?这真的是可实现的么?我持怀疑态度。也许将来会专门提供 App 使用的蜘蛛,并且蜘蛛可能应该换一种工作模式(虽然我还没想出到底会是什么样的)。
网名:
34.203.245.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^