vue-seo优化

一、为什么 Vue 需要专门做 SEO
      Vue 默认是客户端渲染 SPA,首屏 HTML 几乎为空,爬虫抓取不到内容;即使 Googlebot 能执行 JS,也存在“渲染预算”与加载延迟问题

二、技术落地 4 条路线

场景技术选型实现要点适用
内容更新频繁、SEO 高要求Nuxt3 SSRnpx nuxi@latest init my-seo-appuseHead() 设置 title/meta;useAsyncData()企业官网、电商
内容相对静态Nuxt3 SSGnuxt generate 一键生成纯静态文件;部署到 CDN 即可博客、文档
只想给几个关键路由做 SEO预渲染npm i prerender-spa-plugin -D;在 vue.config.js 中配置需要预渲染的路由即可 缺点:CSS和JS不可用活动页、落地页
已开发完的 SPA 不想重构动态渲染用 Puppeteer/Rendertron 针对爬虫返回静态 HTML;配合 Nginx UA 判断(最好选择:Puppeteer)旧项目应急

三、用 Puppeteer针对爬虫返回静态 HTML;配合 Nginx UA 判断

  描述:• 真人访问 → 正常返回 SPA 的 index.html
            • 爬虫访问 → 由 Rendertron(或 Puppeteer)渲染成静态 HTML 后返回

3.1 Puppeteer 渲染服务(Node)

# 安装
npm i express puppeteer

server.js

const express = require('express');
const puppeteer = require('puppeteer');const app = express();
let browser;(async () => {browser = await puppeteer.launch({headless: 'new',args: ['--no-sandbox', '--disable-setuid-sandbox']});
})();app.get('/render', async (req, res) => {const { url } = req.query;if (!url) return res.status(400).send('url required');const page = await browser.newPage();await page.setUserAgent('Mozilla/5.0 (compatible; PuppeteerRender/1.0)');await page.goto(url, { waitUntil: 'networkidle2' });const html = await page.content();await page.close();res.set('Cache-Control', 'public, max-age=300'); // 5 分钟 CDN 缓存res.send(html);
});app.listen(3001, () => console.log('Puppeteer render service on 3001'));

 运行

node server.js

测试:浏览器: http://localhost:3001/render?url=https://www.baidu.com(自己网址)

 或者 :curl http://localhost:3001/render?url=https://www.baidu.com(自己网址)

查看内容和浏览器渲染一样即可

3.2 nginx配置

map $http_user_agent $is_bot {default 0;~*Googlebot 1;~*Baiduspider 1;~*bingbot   1;~*Slurp     1;~*DuckDuckBot 1;
}
server
{listen 80;listen 443 ssl http2 ;server_name baidu.com;index index.html index.htm default.htm default.html;root /www/wwwroot/www_t.baidu.com;try_files $uri $uri/ /index.html;#CERT-APPLY-CHECK--START# 用于SSL证书申请时的文件验证相关配置 -- 请勿删除并保持这段设置在优先级高的位置include /www/server/panel/vhost/nginx/well-known/tw.yougo.vip.conf;#CERT-APPLY-CHECK--END#REWRITE-ENDlocation / {proxy_set_header X-Original-Host $host;proxy_set_header X-Original-Request-URI $request_uri;proxy_set_header User-Agent $http_user_agent;# 1. 如果是爬虫 → 代理到 Puppeteerif ($is_bot) {proxy_pass http://127.0.0.1:3001/render?url=$scheme://$host$request_uri;# 传递必要头部break;}# 2. 真实用户 → SPAtry_files $uri $uri/ /index.html;}#禁止访问的文件或目录location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md){return 404;}#一键申请SSL证书验证目录相关设置location ~ \.well-known{allow all;}#禁止在证书验证目录放入敏感文件if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {return 403;}location ~ .*\\.(gif|jpg|jpeg|png|bmp|swf)${expires      30d;error_log /dev/null;access_log /dev/null;}location ~ .*\\.(js|css)?${expires      12h;error_log /dev/null;access_log /dev/null;}access_log  /www/wwwlogs/tw.yougo.vip.log;error_log  /www/wwwlogs/tw.yougo.vip.error.log;
}

主要的配置点是:

map $http_user_agent $is_bot {default 0;~*Googlebot 1;~*Baiduspider 1;~*bingbot   1;~*Slurp     1;~*DuckDuckBot 1;
}location / {proxy_set_header X-Original-Host $host;proxy_set_header X-Original-Request-URI $request_uri;proxy_set_header User-Agent $http_user_agent;# 1. 如果是爬虫 → 代理到 Puppeteerif ($is_bot) {#proxy_pass http://localhost:3001/render?url=$scheme://$host$request_uri;proxy_pass http://127.0.0.1:3001/render?url=$scheme://$host$request_uri;# 传递必要头部break;}# 2. 真实用户 → SPAtry_files $uri $uri/ /index.html;}

配置即可(注意配置时,不要使用localhost 这样nginx解析会出错)

测试:使用POSTMan测试

主要是User-Agent   Mozilla/5.0 (compatible; Baiduspider/2.0)

这样就可以模拟百度爬虫,进行访问

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

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

相关文章

Typecho分类导航栏开发指南:从基础到高级实现

文章目录 Typecho分类导航栏深度解析:父分类与子分类的完美呈现 引言 一、Typecho分类系统基础 1.1 Typecho分类结构 1.2 获取分类数据的基本方法 二、基础分类导航输出 2.1 简单的平铺式导航 2.2 带计数器的分类导航 三、层级分类导航实现 3.1 递归输出父子分类 3.2 使用Type…

深度解析:htmlspecialchars 与 nl2br 结合使用的前后端协作之道,大学毕业论文——仙盟创梦IDE

在 Web 开发中,数据从前端表单流入后端处理,再经渲染回到用户浏览器的过程中,安全与格式控制是两个核心挑战。PHP 的htmlspecialchars与nl2br函数分别应对这两个问题,而它们的巧妙结合更能构建出安全且友好的用户体验。本文将深入…

Python爬虫入门到实战(2)-selenium驱动浏览器

selenium库是一种用于Web应用程序测试的工具,它可以驱动浏览器执行特定操作,自动按照脚本代码做出单击、输入,打开,验证等操作,支持的浏览器包括IE、Firefox、Safari、Chrome、Opera等。而在办公领照下的城中如果经常需…

excel分组展示业绩及增长率

excel分组展示业绩和增长率效果图如下图所示,两个表格分别是业绩表和增长率(达成率)表,如何将其直观又美观的做在一个表上?制作步骤1.选择表1数据,简单创建一个簇状柱形图2.表1中插入一列,内容为#N/A,表后一…

深度学习前置知识

文章目录介绍数据操作张量张量的定义1. **张量的维度(Rank)**2. **张量的形状(Shape)**简单的数据预处理(插值线性代数微积分概率论1. 基本概念(1) 随机试验与事件(2) 概率公理(Kolmogorov公理)…

心电图时间序列的 ARMA 模型分析与预测

首先说明:arma 用于心电图不一定合适,只是手头正好有这个数据import json import numpy as np import pandas as pd import matplotlib.pyplot as plt from statsmodels.tsa.stattools import adfuller, acf, pacf from statsmodels.tsa.arima.model imp…

iPhone 数据擦除软件评测(最新且全面)

当您准备出售、捐赠或回收 iPhone 时,仅仅恢复出厂设置并不足以保证您的个人数据彻底消失。专业的 iPhone 数据擦除软件采用先进的技术,确保您的敏感信息永久无法恢复。本文回顾了十种流行的 iPhone 数据擦除工具,详细介绍了它们的功能、优点…

Zabbix 分布式监控系统架构设计与优化

一、概念 1.核心概念 Zabbix是一个CS(服务端/客户端)架构的服务Zabbix-Agent获取数据-->发送给-->Zabbix-Server服务端--- >数据会被存放在数据库 <--- Zabbix Web 页面展示数据 2.部署流程 部署ngxphp环境并测试部署数据库 mariadb 10.5及以上 然后进行配置编…

【保姆级喂饭教程】Idea中配置类注释模板

目录一、配置类注释模板一、配置类注释模板 在idea中配置以下内容 打开路径 File - Settings - Editor - File and Code Templates - Includes - File Header ${USER}默认为系统账户名称&#xff0c;一般不是需要的&#xff0c;实际使用的时候换成自己的姓名缩写小写 /*** &l…

AntV G6 基础元素详解(React版)

一、初识 AntV G6 AntV G6 是蚂蚁集团推出的专业级图可视化引擎&#xff0c;适合构建关系图谱、拓扑图、流程图等场景。相比其他图形库&#xff0c;G6 提供完整的布局算法 和交互体系 &#xff0c;开发者在 10 分钟内即可搭建可交互的图应用。 技术特点速览&#xff1a; 支持 C…

web安全入门 | 记新手小白初次尝试挖越权漏洞

目录 中华人民共和国网络安全法 文章内容仅用于以防御为目的的演示请勿用于其他用途&#xff0c;否则后果自负 前言 渗透思路 渗透过程 第一步&#xff1a;注册测试账号 分析请求与响应 取消预约测试 越权测试 参考 中华人民共和国网络安全法 第二十七条 任何个人和组…

【Redis 】看门狗:分布式锁的自动续期

在分布式系统的开发中&#xff0c;保证数据的一致性和避免并发冲突是至关重要的任务。Redis 作为一种广泛使用的内存数据库&#xff0c;提供了实现分布式锁的有效手段。然而&#xff0c;传统的 Redis 分布式锁在设置了过期时间后&#xff0c;如果任务执行时间超过了锁的有效期&…

SAP NWBC WELCOME_MESSAGE

背景: 系统升级完首页不显示 WELCOME_MESSAGE Table:NWBC_CFG 里面有配置 但是WELCOME_MESSAGE不显示后debug分析发现换表了&#xff1a; 使用T-code: /N /UI2/CUST去维护 然后NWBC首页就会显示

使用Node搭建一个直播服务器,实时直播当前桌面

初始条件 Node20 需要本机安装好ffmpeg&#xff0c;并且版本7.0&#xff0c;可以查看我写的这个文章来安装 初始化项目 mkdir node-live cd node-live npm init -y安装依赖 npm install node-media-serverNode-Media-Server 是一款基于 Nodejs 开发的高性能/低延迟/开源…

Springboot 文件下载(Excel) + Vue前端下载按钮

看了网上的一些文件下载博客讲的太多了&#xff0c;我只想要完成这个事情&#xff0c;所以写一篇简洁一点的教程 我这里的代码是针对 Excel表格的&#xff0c;如果你是其它类型的文件就要看详细一点&#xff0c;如果你也是Excel 直接复制去用即可 我是把文件直接放到项目的 …

STM32-I2C

数据协议层有效性规定&#xff1a;SCL高电平&#xff0c;SDA数据必须稳定&#xff1b;SCL低&#xff0c;SDA允许变化数据&#xff1b;以字节为单位&#xff1b;8bit起始信号-主机占用-终止信号&#xff08;都是主机发&#xff09;应答相应-检测位&#xff1b;接收端控制SDA来实…

下一代防火墙web防护

目录 概要 整体架构流程 技术细节 实验步骤 小结 概要 下一代防火墙&#xff08;NGFW&#xff09;的Web防护功能通过深度包检测&#xff08;DPI&#xff09;、行为分析和机器学习技术&#xff0c;识别并阻断Web应用层威胁。防护范围包括SQL注入、XSS跨站脚本、CSRF攻击等OWASP…

Selenium动态网页爬虫编写与解释

使用Selenium来抓取动态网页。动态网页通常是指那些通过JavaScript动态加载内容的网页&#xff0c;这些内容在初始HTML中并不存在&#xff0c;因此使用传统的requests库无法获取到这些动态生成的内容。Selenium可以模拟浏览器行为&#xff0c;等待JavaScript执行并渲染页面&…

Spring AI之Prompt开发

文章目录1 提示词工程1_核心策略2_减少模型“幻觉”的技巧2 提示词攻击防范1_提示注入&#xff08;Prompt Injection&#xff09;2_越狱攻击&#xff08;Jailbreaking&#xff09;3 数据泄露攻击&#xff08;Data Extraction&#xff09;4 模型欺骗&#xff08;Model Manipulat…

Python密码学库之pycryptodome使用详解

概要 pycryptodome是一个功能强大的Python密码学库,是pycrypto库的现代化替代品。它提供了全面的密码学功能,包括对称加密、非对称加密、哈希算法、数字签名等。该库具有良好的性能、安全性和易用性,广泛应用于网络安全、数据保护、身份验证等领域。 安装 1、安装命令 pi…