塞翁失马焉知非福
- 名词解释
SPA(Single Page Application)单页面应用: 基于一张html和一些JS代码,AJAX请求完成整个应用的交互使用。
SEO(Search Engine Optimize)搜索引擎优化: 根据各大搜索引擎的爬虫处理逻辑,调整应用中网页的源码规则,以提高搜索权重。
SSR(Server Side Render)服务端渲染: 相对于某些数据接口(直接返回text/json
数据),在服务端直接将json数据拼到html代码块中,然后将这段html源码
返回给前端。
好处是前端拿到的时候已经是html了,方便爬虫程序直接对其进行分析。
- 介绍
最近做了一个单页面应用(SPA, Single Page Application)。
SPA存在的问题中,有首屏加载慢
以及SEO难度大
,
其中首屏加载慢已经通过拆分加载文件的大小等步骤实现优化。
SEO难度大。
就是说,整个应用基于一张index.html
,其上的所有变化都是在app.js
(或其他名称)中已经写好了(DOM操作)。
这样就导致:搜索引擎的爬虫程序,不能一如往常收录到应用内部的关键词(之前的多页面应用,就比较方便收录)。
解决方案也有:服务端渲染(SSR, Server Side Render)。
之前的动态页面技术:asp, jsp, php等,以及thymeleaf、freemarker等模板引擎,都是在服务端就把数据填充到HTML标签快中,然后返回这个渲染后的HTML。
总之HTTP响应内容直接是网页,这样方便爬虫爬取分析。
废话不多说,以下是我的想法:
- 我放弃SSR这种解决方案
- 我只对网站首页做SEO(就是对public/index.html
中的请求头等做一些调整)
- 对于网站内容,比方说是博客,那么对具体详细页面不做SEO的利弊如下:
- 弊: 网站内部的详细页面,无法被搜索引擎收录,更多的用户无法轻易检索到这里。
- 利: 这些东西也不会被一些“抄袭”用的爬虫程序爬取到,保护原创内容。
想到这里,我不用想办法对网站内部详细页面做SSR了 。
要从用户需求这个起点,解决需求(消灭需求)。