讲真,之前没考虑过这个问题。因为项目原因,自己用python的一些工具,爬取了淘宝、京东、百度等的一些图片和图片名称之类的信息。以为爬虫只是解析html文本,然后提取关键字,保存自己想要的信息即可,或者再不济就用个Selenium WebDriver去调用浏览器,从未想过爬虫与页面的关系。

  在此之前,大家得了解了解H5语义化: http://www.daqianduan.com/6549.html ,可以看看这篇文章,写的很透彻。语义化就是为了代码具有可读性,提高了代码的可维护性,可以让页面结构清晰,有利于SEO和爬虫解析。div是非语义化标签,一个 div 看起来总没有一个 p 意义更明显。虽然现在 H5 出了一些语义化标签,比如 <header>/<section>/<footer>/<article> ,但是其实各大网站上用的很少,一方面是为了兼容低版本的浏览器,另一方面也可能是前端工程师(比如我),没有意识到语义化的重要性。

  现在我们谈谈SEO(Search Engine Optimization ),SEO是搜索引擎优化,说简单点,就是你的前端的页面最好能让机器也很容易的看懂,并且轻松提取关键字。SEO在搜索引擎时代对于网站来讲意义重大,对于网站的流量导入,起着重大的作用。可以看看:https://www.v2ex.com/t/302616 。而纯前端的项目,由于需要页面加载完成后再去拉取数据进行渲染,大部分搜索引擎没法读取页面内容。特别是SPA项目,更是无法读取到每个路由页面的页面Title。在首屏渲染上,纯前端项目,先要加载Js,再通过Js去加载数据,这两部分网络传输都需要时间,所以难以避免出现页面白屏时间,体验不友好。所以就出现了SSR。

  SSR(server side render),就是服务端渲染,服务器将每个要展示的页面都运行完成后,将整个相应流传送给浏览器,所有的运算在服务器端都已经完成,浏览器只需要解析 HTML 就行。浏览器渲染对爬虫不友好,也就是对SEO不友好,所以就出现了服务器端渲染。 Vue2.0在服务端创建了虚拟DOM,因此可以在服务端可以提前渲染出来,这解决了单页面一直存在的问题:SEO和初次加载耗时较多的问题。同时在真正意义上做到了前后端共用一套代码。要用SSR,得准备一个node server(express,koa…),这也不可避免地加大了性能、运维等挑战。

下面举个栗子:

  比如用户A在上海某个局域网打开了  https://live.kuaishou.com/ ,用户B在背景某个局域网也打开了  https://live.kuaishou.com/ ,这是两个client,都向 live.kuaishou.com (前端服务器)发起了页面请求,假设前端服务器的物理机器在C地。前端服务器接受请求后,先向后台请求数据,一般前端服务器和后台同源,不跨域;(如果跨域,前端服务器和后台约定跨域策略)。前端服务器得到数据后,有两种选择。一是该页面初始模板发送给用户浏览器,用户浏览器等JavaScript 都完成下载并执行,自己输出 Vue 组件,进行生成 DOM 和操作 DOM,也就是浏览器端渲染页面(CSR)。另一种就是将同一个组件渲染为服务器端的 HTML 字符串,将HTML 字符串直接发送到用户浏览器,最后将这些静态标记"激活"为客户端上完全可交互的应用程序,这就是服务器端渲染(SSR)。

  在CSR这里,同步是关键。如果 live.kuaishou.com 页面某些部分初始展示 loading 菊花图,然后通过 Ajax 获取内容,爬虫抓取工具并不会等待异步完成后再行抓取页面内容。也就是说,如果 SEO 对站点至关重要,而页面又是异步获取内容,则需要服务器端渲染(SSR)解决此问题。这样在客户端页面其实是静态的,这样方便抓取工具就能 get 到页面的很多重要内容。

学习链接:

1、如何用vue做ssr?https://www.cnblogs.com/wangshiyang/p/6565624.html

2.从0开始,搭建vue2.0的ssr服务(推荐):https://www.jianshu.com/p/c6a07755b08d

3.从0开始,搭建vue2.0的ssr服务系列之一:https://segmentfault.com/a/1190000009352740

4.基于vue的服务器端渲染:https://www.cnblogs.com/jcscript/p/7574276.html

5.从Script、Code Behind到MVC、MVP、MVVM: http://www.cnblogs.com/indream/p/3602348.html

前端SEO与爬虫与SSR(Server Side Render)的更多相关文章

  1. Vue(SPA) WebPack模块化打包、SEO优化(Vue SSR服务端同构直出)、全浏览器兼容完整解决方案

    白驹过隙,时光荏苒 大概去年这个时候写了angular 结合webpack的一套前端方案,今年此时祭出vue2结合webpack的一套前端方案. 明年的这个时候我又是在做什么... 读在最前面: 1. ...

  2. 前端SEO技巧

    前几天在慕课网上学习了“SEO在网页制作中的应用”,觉得挺好.挺有用的,今天,特此做了一个小小的笔记,也算是对学习过后的一个总结. 一.搜索引擎工作原理 当我们在输入框中输入关键词,点击搜索或查询时, ...

  3. 前端SEO

    一.搜索引擎工作原理 当我们在输入框中输入关键词,点击搜索或查询时,然后得到结果.深究其背后的故事,搜索引擎做了很多事情. 在搜索引擎网站,比如百度,在其后台有一个非常庞大的数据库,里面存储了海量的关 ...

  4. 前端seo小结,网页代码优化

    seo的目的:提高网站流量 search engine optimization 搜索引擎优化seo search engine marketing 搜索引擎营销sem 权重10个等级 等级越大,权重 ...

  5. 前端-SEO

    SEO是 search Engine Optimization   (搜索引擎优化) SEO: ①白帽SEO(普通SEO做的优化) 网站标题.关键字.描述 网站内容优化 Robot.txt文件 网站地 ...

  6. 前端SEO优化

    结构优化 1.扁平化结构,目录层次越少越好

  7. 关于前端SEO的一些常用知识总结

    Search English Optimization,搜索引擎优化,简称为SEO. (1)网站结构布局优化:尽量简单 1. 控制首页链接数量:首页链接不能太多,一旦太多,没有实质性的链接,很容易影响 ...

  8. 前端seo基础规范

    基本规范 TDK代码规范 A: 关键词,一般3~4个最好,要与当前页面内容相关(根据实际情况,不适宜过多堆积关键词): B: 杜绝不同URL的页面标题重复现象,作为搜索结果摘要的重要选择目标之一,一定 ...

  9. 从壹开始前后端分离 [ Vue2.0+.NetCore2.1] 二十六║Client渲染、Server渲染知多少{补充}

    前言 书接上文,昨天简单的说到了 SSR 服务端渲染的相关内容<二十五║初探SSR服务端渲染>,主要说明了相关概念,以及为什么使用等,昨天的一个小栗子因为时间问题,没有好好的给大家铺开来讲 ...

随机推荐

  1. 四、fgets与fputs

    fgets 描述:从流中读取最多size个字符,遇到文件末尾或\n则停止读取,该函数会在读取到的字符最后加上\0. 原型:char *fgets(char *s, int size, FILE *st ...

  2. 360技术笔试编程题 - 无意间看到这么个东西,闲来无事用JS写了一下

    题目描述 为考验各自的数学能力,小B和小A经常在一起玩各种数值游戏,这一次他们又有了一种新玩法.每人从指定的数值范围中各自选择一个整数,记小A选择的数值为a,小B选择的数值为b.他们用一个均匀分布的随 ...

  3. L2-013 红色警报 (25 分)

    L2-013 红色警报 (25 分)   战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全 ...

  4. Springboot中的事件Event

    事件Event作为一种常用的线程通讯工具,在Springboot中可以方便地提供开发者进行线程交互. 1.事件定义 1 import org.springframework.context.Appli ...

  5. 2018 ,请领取您Power BI 年终报告

    Power BI365 3Jan 2019 新年已至,岁寒温暖! 为方便Power BI用户们能快速找到所需要的Power BI各类型文章,小悦将2018年Power BI的所有精彩文章按照各应用场景 ...

  6. windows下python双系统安装

    1.首先安装Python2,确认好Python2的安装位置.接着安装Python3,并确定Python3的安装位置. 2.确认系统变量PATH中有python2和python3各自两个的路径,如: D ...

  7. matlab画图命令笔记

    1 函数画图fplot % Create a function plot of y = x^3 over the domain of [-2 2]. % Plot with a thick red l ...

  8. 【EMV L2】数据元格式 & 对齐方式

    [数据元格式] [对齐方式] 摘录:<中国金融集成电路(IC)卡规范 第6部分:借记贷记应用终端规范.pdf>- 8 终端数据

  9. jmeter 报错Error in NonGUIDriver java.lang.IllegalArgumentException: Report generation requires csv output format, check 'jmeter.save.saveservice.output_format' property

    设置jmeter报个的时候报下面错 只要细心看问题就是把它jmeter.save.saveservice.output_format'的格式改为csv就对 这个属性是在jmeter.propertie ...

  10. .htaccess 文件来进行用户组的目录权限访问控制

    <IfModule rewrite_module>RewriteEngine onRewriteRule ^((?:bootstrap|css|img|js||MathJax|video) ...