前言

目前 Vue单页面应用在前端界混的风生水起,它的开发思想使得我们能真正做到前后端分离、解耦。单页面应用使用浏览器动态解析JS,呈现出最终的页面,用户体验比较好,网站性能也提高不少。但网络爬虫并不会动态解析Js,所以访问所有未处理的单页面应用URL得到的只会是项目入口(index.html)文件中的代码,不能得到具体的内容,对Seo的优化极其的不友好。为了优化项目Seo,目前主要有两个方案:服务端渲染(Server Side Rendering)、预渲染(Prerending)。

本文主要介绍预渲染方案中运用prerender服务方式解决Vue单页面Seo问题

预渲染的两种方式

这个插件是一个webpack插件,此方式会在项目构建(npm run build)时将项目按路由打包成相对应的html静态文件。因此,仅有如下项目类型适用。

路由是静态的,且非海量路由

页面内容不需要使用ajax获取并展示内容

prerender:此服务在页面渲染的时,将会直接取代网站后端对爬虫请求进行响应,将提前渲染后静态页面直接返回给爬虫,因为此服务作用在页面渲染时,所以不再受方式1那些路由限制。

prerender 的使用

1、安装

npm install prerender

复制代码

2、启动服务 server.js

const prerender = require('prerender');

const server = prerender();

server.start();

复制代码

3、测试

http://localhost:3000/render?url=https://www.example.com/

复制代码

此时,你已经启动了一个prerender服务,并返回了https://www.example.com/的内容,此时页面上所看到的https://www.example.com/内容是通过prerender服务提前渲染成静态页面后返回的。服务默认运行在3000端口,可以参考prerender文档进行默认修改。

prerender中间件的使用

我们所理想的渲染模式是:当普通用户访问时不需要通过prerender服务提前渲染,而通过js动态渲染;当爬虫访问页面时,通过prerender服务提前将页面渲染为静态页面供爬虫爬取。

那么如何能实现上面的需求呢?

复制代码

1、安装

在Express下安装

npm install prerender-node --save

复制代码

2、修改app.js配置

var prerender = require('prerender-node')

app.use(

prerender

//爬虫访问转发到prerender服务进行预渲染

.set("prerenderServiceUrl", "http://localhost:3000/")

//普通用户访问直接访问项目地址不进行预渲染

.set("host", "wwww.xxxx.com")

);

复制代码

3、重启Express服务

注意事项:

第2步修改配置代码要置于Express路由分发之前;即下列代码之前app.use("/", indexRouter);

app.use("/users", usersRouter);

复制代码

修改app.js配置时候项目地址www.xxxx.com不要带http://

测试

安装好prerender服务以及prerender中间件后prerender预渲染算是大功告成了,下面介绍测试方法。

测试原理: 添加谷歌浏览器Emulated devices模拟爬虫访问,具体实现如下:

1.打开谷歌浏览器开发者工具。

2.点击(进入手机编辑模式)按钮,如图

3.点击选择模拟设备下拉选择,选择最后一个Edit...,将进入如下图。

4.点击Add custom device 按钮

5其中User agent string 填写:

Mozilla/5.0 (compatible; Baiduspider/2.0;+http://www.baidu.com/search/spider.html)其他如图,

6.点击保存。

7.点击选择模拟设备下拉选择,选择新添加的模拟百度爬虫

经过以上7步,你浏览器能模拟爬虫访问,此时打开浏览器控制台network筛选doc类型,刷新页面,能看到页面返回是经过编译后的静态文件。

选择其他非爬虫模式Emulated devices或不打开Emulated device调试模式,刷新页面,能看到页面返回是通过js动态解析的。

总结

配置prerender总体思路:通过prerender中间件判断是否是爬虫访问页面,如果是爬虫访问则转发给prerender服务进行提前编译,否则直接返回js动态渲染页面。

其他Vue单页面seo优化可以参考:Vue单页项目SEO完全指南

prerender ajax,Vue Prerender.io 预渲染seo优化相关推荐

  1. vue项目使用预渲染 进行seo优化

    vue项目使用预渲染 进行seo优化 vue进行seo优化的两个方法 1.预渲染*** 针对项目其中几个页面的seo,标题不能通过接口数据动态渲染 情况使用 使用以下两个插件进行预渲染seo优化: n ...

  2. vue项目利用预渲染prerender-spa-plugin处理seo --viga

    vue项目利用预渲染处理seo 写在前面 什么是SEO? SEO是英文 Search Engine Optimization 的缩写,中文意思"搜索引擎优化".SEO是指在了解搜索 ...

  3. Vue 3配置prerender-spa-plugin 预渲染(优化页面SEO)【亲测简单】

    Wish today!!! 关于我为什么一上来就要说这句话! 这个事还得从很久很久以前说起. 那天我看到一只鸡穿着背带裤打着- 呸... 不好意思,说错了. 这事还是因为某天,我使用Vue3的版本做了 ...

  4. vue利用prerender-spa-plugin预渲染

    前端时间写一个vue官网,开发很顺利,但是发布之后,发现对于SPA项目seo很不友好,于是用到预渲染进行优化,顺便利用vue-meta-info编写每个页面的name.content等等. 一.安装 ...

  5. vue无需改动代码的SEO优化【百度收录问题】优化--puppeteer(详细流程)

    vue无需改动代码的SEO优化–puppeteer(详细流程) 目录 vue无需改动代码的SEO优化--puppeteer(详细流程) 概念 一.安装puppeteer:npm install pup ...

  6. 服务端渲染(回答vue为啥子不支持seo优化,如何解决)

    整体目标: 理解服务端渲染的概念 会用vue的SSR Nuxt中的async 一.基本概念 页面的两种生成方式 用户从浏览器地址栏中输入地址访问服务器上的页面时,服务器可以用两种不同的策略来生成这个页 ...

  7. vue项目改造nuxt(SEO优化)

    欢迎大家进群,一起探讨学习 微信公众号,每天给大家提供技术干货 博主技术笔记 博主网站地址1 博主网站地址2 博主开源微服架构前后端分离技术博客项目源码地址,欢迎各位star 1. 背景 今年开源了一 ...

  8. vue开发的网站做seo优化的方法

    由于vue是通过js来渲染html的内容的,但是搜索引擎对js并不友好,搜索引擎并不会自动像浏览器那样帮我们抓取网站的真正内容. 因此,我们就需要像传统的php.ssh或.net网站那样,需要一个服务 ...

  9. 利用预渲染解决优化性能问题IOS

    http://www.keakon.net/2011/07/26/%E5%88%A9%E7%94%A8%E9%A2%84%E6%B8%B2%E6%9F%93%E5%8A%A0%E9%80%9FiOS% ...

最新文章

  1. Databricks基本操作
  2. Mysql insert语句的优化
  3. 印象笔记三级目录_我的印象笔记使用手册
  4. 浅谈linux字符设备注册
  5. 手写自己的MyBatis框架-1.0 的不足
  6. Weblogic EJB 学习笔记(3)精
  7. html5执行shell,利用nginx执行Shell 脚本
  8. Android自定义View研究(六)--View中的原点坐标相关问题
  9. c语言flip用法,C ++ STL中的bitset :: flip()
  10. QT学习之文件读写操作
  11. 用C语言调用.bat批处理命令
  12. hawk物联网组态工具_有哪些开源html5的组态软件
  13. yabailv 运放_运放块压摆率单位增益频宽和逻辑器件传输延时
  14. bat 脚本(批处理)操作注册表
  15. 布法罗计算机专业怎么样,2019上海软科世界一流学科排名计算机科学与工程专业排名纽约州立大学布法罗分校排名第76-100...
  16. 卸载Oracle步骤
  17. 前端资深技术专家苏千的“三迁”故事
  18. d3dcompiler_43.dll缺失怎么修复方法_d3dcompiler43dll丢失怎么解决
  19. 上海交通大学计算机专业培养方案,上海交通大学计算机科学与技术专业本科培养计划...
  20. python:PTA try-except-else异常

热门文章

  1. python枚举法例子_使用枚举类
  2. [golang gin框架] 4.自定义Model以及Gin 文件上传
  3. matlab调用函数出错,[MATLAB基础] matlab 调用函数老是出错怎么回事??高手请指点一下...
  4. 金融风控实战——风控领域涉及到的算法和风控算法工程师需要具备的能力
  5. 2021 华南农业大学Linux编程题
  6. iVMS-4200 Vs区别_增额终身寿比拼:中华尊VS如意尊VS锦绣传承VS君康金生金世
  7. (已解决)WORD公式,手动输入的编号,不能显示
  8. Juniper SSG 550M NSRP配置文档
  9. WIKIOI-1146 ISBN号码
  10. 华为杯题E 你的Alice(博弈论)