vue使用prerender-spa-plugin预渲染进行seo优化

news/2024/5/20 15:30:39/文章来源:https://blog.csdn.net/msg1254765721/article/details/90090225

前言

单页应用(SPA)是最近流行的一种应用模式,它支持在同一页面下通过哈希(hash)或html5的history api实现不刷新式切换视图,既实现了动态路由的变化,也实现了历史记录的保持,然而,相比于静态页面和动态页面(ASP/PHP/JSP)而言,缺点也是显而易见的,那就是对SEO不友好。

不管是Vue、React还是angular等实现路由的框架,无一不是加载原始html代码,再通过JavaScript动态渲染页面,但对于爬虫而已,JavaScript代码是不会执行的,从而导致爬取不到合适的内容。

解决方案

13908708-93a577acf470a530.png
爬虫

搜索爬虫不会去执行js代码,只会从原有的html中读取相关信息,所以总的解决方案是尽可能保证原始html代码包含希望被收录的信息,有下面几种方案:

1、页面中使用隐藏式元素
在html源码上写入希望被收录的静态信息,但不显示出来,仅为爬虫服务。

2、专门为爬虫开一个服务
在后端做http拦截,检查请求代理User-Agent是不是爬虫,如果检测到是爬虫类型,动态生产html片段,仅为爬虫服务。

3、使用预渲染(preredner)
在构建项目的同时,自动在浏览器中渲染一遍页面,然后生成相应路由下的静态html,这些路由只有在不执行javascript时才会显示(正是爬虫的情况),如果执行了js,将触发常规逻辑。

4、使用服务端渲染(SSR)
并非动态页面,而是在node端执行vue代码,翻译转换得出相应的html片段/全文,最后在响应体中返回信息(后续文章介绍)。

综合考虑后,方式一适合简单修改,方式二修改难度高,方式三和方式四最为合适。从简易难度而已,预渲染是最简单最快捷的,所以这里先介绍预渲染的seo优化方式。

使用

先安装prerender-spa-plugin模块,然后修改路由为 history 模式,紧接着在打包配置中(webpack.prod.config.js或vue.config.js)添加PrerenderSPAPlugin插件,最后在入口文件中触发相关事件即可。

$ npm install prerender-spa-plugin -S
// build/webpack.prod.conf.js 或 vue.config.js
const PrerenderSPAPlugin = require('prerender-spa-plugin'); // 预渲染
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;// plugins中配置PrerenderSPAPlugin
new PrerenderSPAPlugin({staticDir: path.join(__dirname, '../dist'),// 对应自己的路由文件,比如index有参数,就需要写成 /index/param1。routes: ['/'], // 因为该系统操作都是基于登录后的,所以只做登录页面的预渲染就行了renderer: new Renderer({inject: {foo: 'bar',},headless: false,// 在 main.js 中 document.dispatchEvent(new Event('render-event')),两者的事件名称要对应上。renderAfterDocumentEvent: 'render-event',}),
})

由于该插件需要电脑上已安装浏览器软件才可以运行,如果需要在没有浏览器的linux上运行打包,需要先检查电脑版本再添加插件,判断方式如下:

// build/webpack.prod.conf.js 或 vue.config.js
const os = require('os');
// 预渲染操作判断,仅当当前运行系统为window或mac才执行预渲染打包
if (['Windows_NT', 'Darwin'].includes(os.type())) {console.log( '将自动打开浏览器进行预渲染操作');// 插入前面的插件配置
}else{console.log( '非window或mac系统,不存在浏览器,取消预渲染操作');
}

main.js入口文件在 vue 实例完成后执行

// main.js
document.dispatchEvent(new Event('render-event')); // 预渲染

最后因为我们修改了路由模式为history,普通情况下对于浏览器而言‘/list/detail’实际上是要去请求‘/list/detail/index.html’页面,这显然不存在,会报404异常。所以我们需要对nginx服务器进行代理转发,设置如下:

# ect/nginx/nginx.conf
# vue最小管理系统配置(后台服务3000端口)
server {listen       8080; # 监听8080端口root         /www/vue-base-demo/dist/; // 静态资源目录index        index.html; // 首页location / {try_files $uri $uri/ /index.html; # 当找不到文件404的时候,转发的index.html上}
}

当然其他服务器也可以实现,只要思路一样就行。


打包

npm run build

打包后将在dist文件夹下生成相应的html文件。

预渲染注意事项
· vue-cli 2.x 和 vue-cli 3.x 配置差不多
· 路由需要使用 history 模式
· 预渲染配置 routes 属性可以填写路由对应的 url,如果需要参数需要配置合适的参数
· renderAfterDocumentEvent 需要对应
· 预渲染打包前会自动打开浏览器从而获取到相关 dom,如果没有浏览器软件将打包失败(建议· 把 dist 包括在 git 项目内)
· nginx 需要相应的修改,避免 404

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_859772.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET MVC网站部署在阿里云服务器(WindowsServers2012+IIS6.0环境)

在部署网站之前,购买阿里ESC服务器之后,咱们需要部署IIS6.0的网站的服务,如果已经弄好的话可以跳过,没弄好的话,可以借鉴一下我的上一篇文章阿里云windows server 2012 配置asp.net的IIS服务,希望对你IIS的…

在外网通过服务器公网IP访问IIS发布ASP.NET网站

在把网站部署在服务器的IIS上以后,我就开始浏览我的网站了。如果不会部署,可以看我ASP.NET MVC网站部署在阿里云服务器(WindowsServers2012IIS6.0环境)。 在我的预想中当然是一帆风顺了,这种情况在理想中总是丰满的&a…

码农如何快速打造一个有设计感的网站 How to Make Your Site Look Half-Decent in Half an Hour

像我这样的程序员来说经常被“设计”这个词吓到,因为我是一名程序员而不是设计师,我拥有的是计算机学位证,另外我对 Comic Sans 字体并不介意。(注:Comic Sans 字体是 Win95 附带的一种漫画字体,设计行业极…

爬虫xx网站论坛的帖子源码分享

import re import time from urllib import parse import urllib import requests def updatepostinfo(startid,endid): for num in range(int(startid),int(endid)1): time.sleep(2) print(num) posturl"http:网站/detailnew.php?id&…

某淘客网站的爬虫数据并写入到excel文件中的源码

def hdktest(url,userid): try: pcresurllib.request.urlopen(url) pcrespcres.read().decode() return pcres #异常处理 except urllib.error.HTTPError as reason: taskinfohdktask.objects.get(hdktask_linkuseriduserid) …

使用django实现某淘客网站采集功能

原来设计的效果如下 后来根据需求又改了一版效果如下 源码分享&#xff1a; {% load customtag %} <!DOCTYPE html> <html lang"zh-CN"> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"&…

DEDECMS风水织梦模板带手机站,DEDECMS风水网站

模板介绍&#xff1a; 织梦最新内核开发的模板&#xff0c;该模板属于风水行业&#xff0c;企业通用&#xff0c;企业管理&#xff0c;企业咨询等企业均可以使用该模板&#xff0c;页面简洁简单&#xff0c;容易管理&#xff0c;附带测试数据&#xff01; 模板特点&#xff1a…

ecshop商城自定义URL链接SEO优化排名_ecshop商城自定义URL静态html

简介&#xff1a; ecshop商城优化提高网站排名重要三步缺一不可&#xff1a;ecshop自定义URL链接静态URL,ecshop自定义title标题&#xff0c;ecshop自动内链接。很多ecshop商城站长对商城创建以后感觉就完事了&#xff0c;好像并不在乎网站排名和收录&#xff0c;如果一个商城创…

给ECSHOP每个商品自己设置URL名称地址提高SEO优化插件

插件简介&#xff1a; ecshop商品自定义url和标题&#xff0c;这个是很多人都追求的一个功能。为了让ecshop更加加强SEO优化。我们就不得不对ecshop url进行自定义。本插件适合任何摸板以包括最新ecshop4.1插件内附带有详细安装说明&#xff0c;自己完全可以安装。插件代码不加…

[SEO优化必备]ECSHOP商城全站自定义TITLE标题插件

插件简介 ECSHOP自定义TITLE标题插件 ECSHOP自定义TITLE标题插件演示地址看本插件浏览器上面标题和商品标题显示不一样就明白了&#xff01; ECSHOP商城全站自定义TITLE标题ECSHOP插件&#xff1a;包含 商品页&#xff0c;商品分类页&#xff0c;商品品牌&#xff0c;文章页 &a…

实现ECSHOP商品自定义URL链接地址插件【提高SEO优化必备】

插件说明&#xff1a;本插件给ECSHOP每个商品自定义URL名称地址提高SEO优化插件 功能特色&#xff1a; ECSHOP虽然支持伪静态&#xff0c;但是伪静态的规则稍有死板。如果ECSHOP每个商品都能自定义URL&#xff0c;那对SEO将很有帮助。本店提供的这个"ECSHOP所有商品自定…

2022最新可用网页百度分享按钮安装教程【网站添加百度分享按钮代码】

简介&#xff1a; 2022最新可用百度分享是一个提供网页地址收藏、分享及发送的WEB2.0按钮工具&#xff0c;借助百度分享按钮&#xff0c;网站的浏览者可以方便的分享内容到人人网、开心网、QQ空间、新浪微博等一系列SNS站点。 网站主可以在百度分享网站中获得分享按钮JS代码&a…

ECSHOP优化外链插件【ecshop优化seo插件】提高ECSHOP商城优化,商品页,文章外链优化插件,SEO插件

参考各大电商一些相关经验&#xff0c;把ecshop文章商品内容里的外链加上跳转页面提示&#xff0c;感觉非常使用实用而且对seo优化提升还不错&#xff0c;那么 ECShop 外链默认都是直接跳转的&#xff0c;没有这方面的插件&#xff0c;所以ECSHOP插件网就做了一个类似的插件&am…

ECSHOP网站日志,ECSHOP维护工具,ecshop错误查看,ECSHOP管理员日志,ECSHOP管理员操作记录

插件简介 对于ECSHOP开发者来说&#xff0c;一旦某个产品投入使用&#xff0c;应该立即将display_errors选项关闭&#xff0c;以免因为这些错误所透露的路径、数据库连接、数据表等信息而遭到黑客攻击。但是&#xff0c;任何一个产品在投入使用后&#xff0c;都难免会有错误出现…

ecshop商城SEO优化自动内链接插件,ecshop自动内链接提高搜索引擎排名收录,ECSHOP自动内链插件,ECSHOP商城优化插件,seo优化插件

ecshop商城网站内链优化有什么作用&#xff1f;内链优化技巧&#xff01; 在网站优化中&#xff0c;有一种优化叫做“内链优化”&#xff0c;顾名思义就是对网站站内的链接进行优化&#xff0c;内链优化是SEO站内优化至关重要的的一环&#xff0c;也正是基于这种认识&#xff0…

ecshop网站导航,html导航分类,分类导航,html分类式导航栏,html分类导航页面插件【有利于网站排名seo优化】

网站导航给优化带来的好处 一个靠谱的网站&#xff0c;它必然在各方面对细节都是非常的在意的&#xff0c;而且对于细节的优化也是把控的很到位。而且许多不够老练的优化师往往会忽视一些优化操作&#xff0c;例如说网站导航栏的优化。对此小编就在这里给大家着重说说网站导航对…

ECSHOP商城SEO优化商城更新内容后将页面链接自动推送给百度

ECSHOP商城SEO优化篇:商品新增加内容或者更新内容以后如何快速让搜索引擎收录?这时候就要用到自动推送功能让搜索引擎知道新增加内容了。ECSHOP商城做好需要SEO优化其中优化之一就是将网站新内容通过自动推送给百度搜索引擎&#xff0c;站长只需安装推送插件&#xff0c;在新发…

ECSHOP多语言插件,ECShop外贸网站添加谷歌翻译,ECShop中添加谷歌翻译,ECShop谷歌语言翻译插件

ECSHOP多语言插件,ECShop外贸网站添加谷歌翻译,ECShop中添加谷歌翻译,ECShop谷歌语言翻译插件 我们生活在一个多样化的世界&#xff0c;人们说许多不同的语言。根据语言学家的说法&#xff0c;世界上有6000到7000种不同的语言。虽然很多人都懂英语&#xff0c;但是如果你的网站…

ECTouch多语言插件,ECSHOP手机版多语言翻译,ecshop手机端多国语言翻译切换,ECSHOP网站多语言切换

ecshop使用谷歌翻译的好处 1.首先是在语言支持这块,谷歌翻译支持高达一百多种语言,几乎可以翻译目前大家常见的语种,并且是支持双向翻译的。 2.谷歌翻译软件翻译的准确率也是比较高的,比较谷歌翻译的技术很早也很成熟了。 3.谷歌翻译软件使用起来界面比较的清新,没有一些乱七八…

【问题解决】Chrome浏览器:该网站使用HSTS。网络错误...此页面稍后可能会工作之解决方法

谷歌浏览器打开常用的网站&#xff0c;发现提示以下信息&#xff08;firefox正常打开&#xff09;&#xff1a; 您的连接不是私密连接 攻击者可能会试图从https://www.test.com窃取您的信息&#xff08;例如&#xff1a;密码、通讯内容或信用卡信息&#xff09;。 NET::ERR_CE…