讲真,之前没考虑过这个问题。因为项目原因,自己用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. 2017-9-3模拟赛T3 密码(key)

    题目 题解 这题用类似暴力+优化(划掉)的思想. 对于每个轨迹串,求出每一位向后的第一个0-9间某个数字的位置(如123112中3后面第1个2的位置为从左往右数第6个),复杂度O(Σn)=O(L). ...

  2. ViewBag赋值Html格式值

    今天再给自己总结一下,关于ViewBag赋值Html格式值,但是在web页显示不正常; 例如,ViewBag.Content = "<p>你好,我现在测试一个东西.</p& ...

  3. like 内容转义

    如题,当SQL语句中使用Like查询,且期望匹配的结果中含有"\"的,应当把"\"替换为"\\\\". 比如数据库中text字段有以下三行: ...

  4. 设置Linux系统的LANG变量

    设置linux系统的LANG变量 对于国内的Linux用户,经常烦恼的一个问题是:系统常常在需要显示中文的时候却显示成了乱码,而由于某些原因,需要英文界面的系统的时候,却苦于系统不能正常输入和显示中文 ...

  5. Wpf binging (二) 集合绑定

    除去简单控件的数据绑定,还有集合控件的数据绑定,一下示例 这发现 source 变成了 itemsSource   Path 变成了   DisplayMemberPath itemsSource:代 ...

  6. 微信小程序笑话小程序实践开发学习

    首先做出笑话展示页面 1.修改app.json文件,在"pages"中添加一条 "pages/joke/joke",然后ctrl+s就可以自动创建joke文件夹 ...

  7. select中想要加a链接 并且新窗口打开

    //新窗口打开 <select id="" onchange="window.open(this.value)"> <option value ...

  8. JAVA003-变量、数据类型

    一.变量的三个元素:变量名(房间名字).变量类型(房间的类型).变量值(入住的人). 二.变量的命名规则: 1.驼峰法     2.尽量简单,见名知意     3.长度没有限制     4.满足标志符 ...

  9. 完美解决win10家庭版本系统无法远程连接问题

    版权声明:本文转载.原文: https://blog.csdn.net/rainmaple20186/article/details/80913191 近期接入同一局域网的服务器,发现在连接的时候,报 ...

  10. 我的代码-sql query

    # coding: utf-8 # In[ ]: WITH List AS (SELECT e.*,f.* FROM( SELECT DISTINCT c.lot_id, c.wafer_key,LE ...