官网-SPA SEO 预渲染改造说明

发布时间:2026/8/6 16:11:56

官网-SPA SEO 预渲染改造说明
SPA SEO 预渲染改造说明日期2026-08-05状态已验证通过内网renderHtml、官网 Googlebot 模拟、详情页跳转均正常1. 背景与目标官网前端为 Vue SPA。搜索引擎爬虫抓取时若只拿到空壳 HTML中间内容、样式、图片会缺失SEO 效果差。目标通过 Puppeteer 服务将页面渲染成带正文的静态 HTML再由 Nginx 在识别到爬虫 UA 时转发预渲染结果使爬虫能拿到有效内容。相关文件文件作用linuxScreen.jsPuppeteer 预渲染服务/renderHtmlgbcom.conf官网 Nginx爬虫分流与静态资源直连frontend/src/views/*.vue详情入口改为真实链接便于无 JS 与爬虫跟随2. 整体链路爬虫请求 https://www.gbcom.com.cn/xxx │ ▼ Nginx 判断 UA 是否为爬虫 │ ├─ 静态资源 / API → 直连业务服务$myproxy │ └─ HTML 页面 → seo 服务 /renderHtml?url完整地址 │ ▼ Puppeteer 打开原站 URL 等待 Vue API 渲染完成 资源地址绝对化、去掉 SPA 脚本 │ ▼ 返回静态 HTML含正文 / 样式链接 / 真实 a 链接内网自测入口示例http://10.60.2.193:35105/renderHtml?urlhttp://10.60.2.193:456783. 问题与修复过程3.1 样式、图片、JS 加载失败现象预渲染页只有导航/页脚骨架中间大片空白或样式丢失。源码里资源仍是根路径/assets/index-xxxx.js、/assets/index-xxxx.css。浏览器打开的是35105/renderHtml?...会去请求35105/assets/...而真实资源在45678。原因返回 HTML 与资源不在同一源根路径/assets/...解析错主机。曾写死base hrefhttps://www.gbcom.com.cn/与内网测试地址不一致。Vite 资源带crossorigin跨源打开渲染页时 CSS 易被 CORS 拦住。修复linuxScreen.js按请求参数url动态取 origin注入正确base。将src/href/srcset/ 内联url()等改写为绝对地址。去掉crossorigin避免跨源看渲染结果时样式失败。3.2 Navigation timeout60s现象渲染失败: Navigation timeout of 60000 ms exceeded原因使用了waitUntil: networkidle0。SPA 常有轮询/长连接网络很难“完全空闲”Puppeteer 一直等到超时。修复改为domcontentloaded。再等#app、业务内容选择器、软等网络空闲超时不中断。兼容新旧 Puppeteer有则用waitForNetworkIdle无则短延迟。3.3 中间主内容出不来现象头尾正常中间 Banner / 解决方案卡片仍空白。原因首页中间数据来自接口如/api/banner、/api/categories/type/solution截取得太早。解决方案卡片默认opacity: 0需加animate-in才可见。返回 HTML 仍带 SPA 入口脚本浏览器再次执行app.mount(#app)会清空已预渲染的 DOM且在渲染域名下接口常失败。修复等待.home .solution-item或列表卡片 /main正文出现后再取 HTML。强制为.solution-item添加animate-in并滚动触发懒加载。移除页面中的业务 JS保留application/ldjson避免二次水合冲掉预渲染结果。保留 CSS 链接已绝对化保证样式正常。3.4 官网 Googlebot 模拟仍无样式图片 Type 变成 text/html现象直连renderHtml正常在www.gbcom.com.cn下把 UA 设为 Googlebot 后页面裸奔。Network 中.jpg/ 样式等 Status200但 Type 为text/html。原因gbcom.conflocation /里只要 UA 像爬虫所有路径含/assets/*.css、图片都转发到renderHtml静态资源也被渲成 HTML。修复/api/、/assets/、/image/以及常见静态后缀始终走$myproxy。仅 HTML 文档页对爬虫做预渲染。爬虫 UA 匹配收紧为更明确的 bot 名称Googlebot仍可命中。3.5 「查看详情」点不进去现象预渲染列表页能看但点「查看详情」无反应。原因预渲染去掉了 JS原先是button click$router.push(...)没有真实href既不能点击跳转爬虫也跟不到详情页。修复前端将各列表「查看详情」与详情页「返回列表」改为router-link最终为带href的a列表入口HomeView.vue、SolutionsView.vue、ProductsView.vue、ConstructionPlansView.vue、NewsView.vue返回列表NewsDetailView.vue、SolutionDetailView.vue、ProductDetailView.vue、ConstructionPlanDetailView.vue效果无 JS 的预渲染页可正常跳转进详情、回列表。爬虫可沿链接发现详情页并由 Nginx 继续预渲染详情 URL。4. 关键配置要点Nginxwww.gbcom.com.cn443 站点建议结构优先匹配/api/、/assets/、/image/、静态后缀 →proxy_pass $myproxylocation /中仅对爬虫 HTMLproxy_pass http://seo_com_gbcom/renderHtml?url$scheme://$host$request_uri预渲染读超时建议 ≥ 60sPuppeteer 渲染耗时修改后需nginx -t并 reload。5. 预渲染服务要点linuxScreen.js/renderHtml推荐流程goto(url, { waitUntil: domcontentloaded })等待应用挂载与业务 DOM首页卡片 / 列表卡片 / main 正文滚动 强制懒加载图片 animate-in资源绝对化去掉crossorigin删除 SPAscript保留 JSON-LD返回text/html; charsetutf-8自测GET /renderHtml?urlhttp://业务主机:端口/ GET /renderHtml?urlhttp://业务主机:端口/solutions源码中应看到绝对资源地址且不应再包含index-xxxx.js入口脚本中间应有 Banner / 卡片等内容。6. 前端改造要点页面改动首页解决方案卡片整卡router-link详情文案为span.back-button解决方案 / 产品 / 案例列表button→router-link.detail-link新闻列表整卡router-link.news-card新闻 / 方案 / 产品 / 案例详情「返回列表」button→router-link带真实列表href样式上为a补充text-decoration: none、color: inherit等保持原按钮观感。部署重新构建并发布前端后预渲染抓到的 HTML 才会带上真实href。7. 验证清单内网renderHtml?url...首页样式、Banner、解决方案卡片正常官网 Googlebot UACSS/图片 Type 正确不再是text/html预渲染列表页「查看详情」可进入详情普通浏览器 UA 访问官网仍走原 SPA体验不受影响建议自测步骤Chrome DevTools → Network conditions → User agent GooglebotDisable cache。打开首页 / 解决方案列表确认版式与图片正常。点击「查看详情」确认进入详情页且内容完整。Network 中确认.css/ 图片请求直连业务而非再次进入renderHtml。8. 注意事项预渲染页刻意无业务 JS用于 SEO 静态快照用户日常浏览仍走未剥脚本的原站。静态路径变更时Nginx 需同步排除如新的上传目录避免再被预渲染吞掉。勿对爬虫全站无差别代理只代理 HTMLAPI/静态必须直连。详情、分类等路由依赖真实a href新增列表入口请继续用router-link/a不要只用click。等待策略避免networkidle0按业务选择器等待更稳。9. 结论本次改造打通了「Puppeteer 预渲染 Nginx 爬虫分流 前端真实链接」完整链路预渲染 HTML 资源地址正确、正文可见官网爬虫流量下静态资源不再被误渲成 HTML详情入口对无 JS 环境与搜索引擎均可跟随。当前方案已在内网与官网 Googlebot 模拟场景验证通过可用于生产 SEO 使用。

相关新闻

答辩前三天AI率58%怎么办?从慌到稳的完整处置方案(亲测3天搞定)

答辩前三天AI率58%怎么办?从慌到稳的完整处置方案(亲测3天搞定)

2026/8/6 16:11:56

答辩前三天AI率58%怎么办?从慌到稳的完整处置方案(亲测3天搞定) 答辩前三天,知网AIGC检测报告出来58%。学校要求30%以下。 这是很多同学的真实处境——时间已经极度紧张,这时候不需要长篇教程,需要的是一…

当4Gb容量塞进6.5mm小方块:拆解工业级存储的“空间魔术”

当4Gb容量塞进6.5mm小方块:拆解工业级存储的“空间魔术”

2026/8/6 16:11:56

在嵌入式存储选型中,4Gbit(512MB)容量节点有其特定的适用场景——对于运行Linux系统、需要存储UI素材或支持OTA升级的设备,容量再小固件放不下;再大成本上去了,封装也往往更大。近期关注到芯天下&#xff0…

亚马逊FBA入仓被判包装不合规遭拒收?亚马逊卖家如何规范贴标入仓少走弯路

亚马逊FBA入仓被判包装不合规遭拒收?亚马逊卖家如何规范贴标入仓少走弯路

2026/8/6 16:01:56

一票货漂洋过海走了一个月,卡在最后五十米——后台弹出提示:包装不符合要求,产生不合规处理费;更糟的是整票被拒收,退回或弃置二选一。做亚马逊的卖家都算过这笔账:拒收损失的不只是货,还有旺季…

FeyNoBg抠图笔记 NoBg使用示例

FeyNoBg抠图笔记 NoBg使用示例

2026/8/6 17:21:59

FeyNoBg 是一个开源的、基于 AI 的图像背景移除模型,它能实现发丝级的高精度抠图。它的使用方法主要有两种:一是通过其背后的 NoBg Python 库进行编程调用,二是通过 Hugging Face Space 在线体验。由于目前公开信息主要聚焦于其库的用法&…

Vue3专题 - 条件渲染

Vue3专题 - 条件渲染

2026/8/6 17:21:59

大家好,我是Java1234_小锋老师,最近更新 《一天学会 Vue3 Vite element-plus UI框架 视频教程》专辑,感谢大家支持。 本课程主要介绍和讲解 Vue3框架,Vite构建工具,以及element-plus UI框架。Vue3核心知识介绍&…

【免费】人脸识别 智能考勤系统(深度学习+OpenCV DNN+FastAPI+Vue3) 锋哥原创出品,必属精品

【免费】人脸识别 智能考勤系统(深度学习+OpenCV DNN+FastAPI+Vue3) 锋哥原创出品,必属精品

2026/8/6 17:21:59

大家好,我是Java1234_小锋老师,分享一套锋哥原创的人脸识别 智能考勤系统(深度学习OpenCV DNNFastAPIVue3) 项目介绍 随着深度学习与计算机视觉技术的快速发展,人脸识别逐渐成为身份认证与智能考勤领域的重要手段。传统考勤方式普遍存在代打…

以太网MAC层详解:从帧结构到VLAN、STP与链路聚合

以太网MAC层详解:从帧结构到VLAN、STP与链路聚合

2026/8/6 17:21:59

1. 项目概述:从“物理线缆”到“数据邻居”如果你把家里的网线插上电脑,或者用Wi-Fi连上路由器,感觉网络通了,这背后其实已经跨越了好几层复杂的协议栈。我们今天要聊的“以太网的 MAC 层”,就是这栋协议大厦里&#x…

终极OBS多平台直播解决方案:obs-multi-rtmp插件完整指南

终极OBS多平台直播解决方案:obs-multi-rtmp插件完整指南

2026/8/6 17:21:59

终极OBS多平台直播解决方案:obs-multi-rtmp插件完整指南 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 你是否曾为同时在不同平台直播而烦恼?是否因为需要运行多…

二阶锥优化在电力系统无功补偿中的应用与实践

二阶锥优化在电力系统无功补偿中的应用与实践

2026/8/6 17:11:58

1. 项目背景与核心挑战在电力系统运行中,无功优化是维持电压稳定、降低网损的关键环节。传统配电网的无功补偿通常采用电容器组投切或同步调相机等离散控制手段,但随着风光等间歇性可再生能源的大规模接入,系统运行工况变得更为复杂多变。我们…

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

2026/8/4 15:23:37

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经从网易云音乐下载了心爱的歌曲&am…

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

2026/8/5 6:02:27

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比工程导读:本文深入讨论 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比 在生产工程实践中的核心落地方案。基于 分布式架构与微服务设计 视角,剖析实际痛点、架…

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

2026/8/5 8:19:55

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhisper,…

Unity相机抖动插件Camera-Shake集成与应用实战指南

Unity相机抖动插件Camera-Shake集成与应用实战指南

2026/8/6 0:00:51

1. 项目概述与核心价值最近在做一个动作游戏,需要给主角的重击和爆炸场景加点料,让打击感更足。我第一时间就想到了给相机加个抖动效果,毕竟这是提升玩家沉浸感最简单直接的手段之一。自己手写一个也不是不行,但时间成本高&#x…

Cocos Creator 3.7微信小游戏开发:从架构设计到提审上线的全流程实战指南

Cocos Creator 3.7微信小游戏开发:从架构设计到提审上线的全流程实战指南

2026/8/6 0:00:51

1. 项目概述:为什么需要一份3.7版本的专属适配指南?如果你是一位使用Cocos Creator开发微信小游戏的开发者,并且项目正运行在3.7版本上,那么你很可能已经感受到了那份“甜蜜的烦恼”。一方面,Cocos Creator 3.7是一个功…

AI编程实战:从Prompt工程到工具链集成,打造高效开发工作流

AI编程实战:从Prompt工程到工具链集成,打造高效开发工作流

2026/8/6 0:00:51

1. 项目概述:一次开源AI编程课程的深度重构 最近,我把自己的开源AI编程课程《Claude Code》做了一次从里到外的大更新。如果你对利用Claude、Codex这类大模型来辅助编程感兴趣,或者正在寻找一个能跟上最新AI编码工具迭代节奏的学习路径&#…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/6 5:43:30

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/4 14:25:14

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/4 15:11:03

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…