我们如何提高 Baklib 的 SEO 性能

news2024/9/20 18:29:02

搜索引擎已经成为我们日常生活中不可或缺的一部分;谷歌甚至成为英语中的动词。因此,每个企业都需要关注其搜索引擎排名。在 Baklib,我们最近遇到了 SEO 排名的挑战。因此,在我们讨论这个问题之前,让我们先了解一下爬行和渲染是如何工作的。
在这里插入图片描述

抓取和渲染如何工作?

网站所有者提供的每个网站上都可以使用 Google 机器人或计算机,其中包含我们网站的链接列表(称为“站点地图”)。当爬虫找到页面时,它会尝试像浏览器一样呈现该页面,但没有任何用户上下文。

大部分内容都在服务器上呈现,并且可以根据请求由浏览器查看。服务器端渲染可以在网站上提供惊人的快速体验,初始加载时间短,并且需要绘制的 JavaScript 更少。但大多数应用程序仍然不能仅仅依赖于完整的 SSR。

在客户端上使用 JavaScript 允许我们进行“事件处理”并在客户端上运行逻辑,而几乎不需要向服务器发出请求来执行客户端操作。
在这里插入图片描述

Baklib 知识库经验

所有知识库站点都有一些共同的部分。这些都是非常标准的,可以在您访问的任何知识库网站上找到。

用于在内容之间导航的类别树(左)

内容部分(中)

目录(右)

搜索(顶部)

到目前为止,我们还没有谈到实际的问题。最近,我们的一些客户开始抱怨知识库 SEO产生了影响,并且用户在使用搜索引擎查找内容时遇到了困难。经过初步分析,我们发现加载页面内容的机制对 SEO 造成了影响。

我们必须在客户端初始化后执行一次获取内容的实现,并发出“ajax”请求以获取当前所选文章的内容,然后将内容绘制在 DOM 上。知识库是根据以下步骤加载的。

用户打开 URL 例如:[ https://docs.Baklib.com/docs/february-2023-release-note ]

页面的整体布局在服务器上渲染

服务器返回总体渲染的布局页面以及在客户端上进行渲染所需的一些数据。

布局初始化后,客户端会向服务器发送请求以获取当前文章的内容,网络请求 URL 如下所示“{subDomain}/load-article/{slug}”

举一个更准确的示例,URL 可能如下所示

你注意到这里的问题了吗?用户查看文章的实际 URL 如下面的屏幕截图所示。

这与谷歌机器人将抓取的网址相同,但它无法找到文章的内容,因为谷歌不知道我们通过子嵌套路由“load-article”加载内容。所以,很明显这是一个根本性问题,对我们的 SEO 产生巨大影响。这导致了更多问题

Google 搜索结果重复

Google 缓存内容为空

当我们查看公共网站的“缓存”页面时,它只是空的。因此,我们冒险寻找一个最佳且强大的解决方案,该解决方案将提高我们的 SEO 分数,并且不会在未来导致任何更多问题。
在这里插入图片描述

我们是这样解决这个问题的:

我们仍然坚信,当用户在类别树中的文章之间切换时,我们不应该重新加载整个页面,因此我们无论如何都必须进行“ajax”调用。但我们需要绘制内容而不绘制整个页面。

让我们想象两个场景:

用户访问页面并通过导航树阅读文章

机器人或蜘蛛在链接上爬行页面

场景1:用户访问页面

当用户访问页面时,如上所述,我们应该只在文章之间导航时绘制内容。但情况2则不然,当机器人访问一个URL时,它只需要爬取内容,它不关心或不知道我们是否再次绘制内容。

一个更好的例子可以更好地理解它。从用户角度来看,当用户浏览文章时,我们删除名为“load-article”的嵌套路由,只向实际 URL 发起请求,并带有一些额外的查询参数,以通知服务器该请求是由用户发起的。

URL 类似于“{subDomain}/release-notes/?partialView=on”。 Google 会将带参数和不带参数的 URL 视为两个不同的 URL。为了解决这个问题,我们添加了一个规范标签,这样 Google 就会忽略带有查询参数的 URL [ 更多参考 Google 文档]。

站点可以具有查询参数来保留状态等。因此,当此请求到达服务器时,服务器仅响应内容。收到的内容块将被绘制在客户端上。

场景 2:机器人访问页面

当机器人访问页面时,我们会在服务器上呈现页面的全部内容。当机器人访问页面时,它只能直接通过站点地图知道内容的 URL。

最后的话

我们部署了这个解决方案,并在内部观察了几周,发现这种方法效果更好,并改善了我们通过 Google Lighthouse 测量的指标。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

宠物空气净化器可以除毛吗?室内浮毛空气净化器推荐

家里养了5只猫,满天飞的猫毛发,随风飘到各个角落,可以说苦不堪言。真的不建议养猫,除非你能接受空气中飞舞着浮毛,衣服、床、筷子、鼻子里全都是猫毛,拉臭臭有异味等等。感觉到处都被猫毛覆盖了&#xff0c…

【多线程】线程状态与并发三大特性的细节剖析

这篇文章主要用于对于多线程的一些查缺补漏。 一、 线程的状态 1,操作系统层面,线程的5种状态 关于线程有几种状态,有多种说法,5、6、7都有。 首先对于操作系统来说,只有5种状态,状态如下新建&#xff…

mac|安装hashcat(压缩包密码p解)

一、安装Macports(如果有brew就不用这一步) 根据官网文档:The MacPorts Project -- Download & Installation,安装步骤如下 1、下载MacPorts,这里我用的是tar.gz ,可以通过keka(keka安装在…

《pygame游戏开发实战指南》第三节 理解pygame中的坐标体系

pygame中的坐标体系非常的简单,其实就是一句话:任何对象的左上角都为坐标原点(0, 0),向右为X轴正方向,向下为Y轴正方向。如下图所示。本节主要通过一些示例来带大家理解这一句话。如果读者已经理解的话,可以直接跳过这…

iPhone不下载APP直接投屏到电脑,这些投影设置你会用吗【电脑投影设置需添加】

最近小编一直在追唐朝诡事录之西行,太好看了,就是手机屏幕有点小,虽然也可以在电脑上看,但是小编心血来潮想投屏到此电脑看看,因此就写了这篇文章。 ①首先打开电脑的设置,打开系统 ②左侧栏中找到投影到此…

学习Java的日子 Day63 文件上传,文件下载,上传头像案例

文件上传下载 1.文件上传 文件上传的应用 比如个人信息的管理,上传头像 比如商品信息的管理,上传商品的图片 这些都需要通过浏览器客户端将图片上传到服务器的磁盘上 2.文件上传原理 所谓的文件上传就是服务器端通过request对象获取输入流,将…

VMware安装Centos虚拟机使用NAT模式无法上网问题处理

NAT模式无法上网问题处理 Centos7与Ubuntu使用同一个NAT网络,Ubuntu正常访问互联网,Centos无法正常访问。 处理方案: cd /etc/sysconfig/network-scripts vi ifcfg-ens33 修改配置项: 重启网络: service network resta…

vue的nextTick是下一次事件循环吗

如题,nextTick的回调是在下一次事件循环被执行的吗? 是不是下一次事件循环取决于nextTick的实现,如果是用的微任务,那么就是本次事件循环;否则如果用的是宏任务,那么就是下一次事件循环。 我们看下Vue3中…

STM32L051K8U6-开发资料

STM32L051测试 (四、Flash和EEPROM的读写)-云社区-华为云 (huaweicloud.com) STM32L051测试 (四、Flash和EEPROM的读写) - 掘金 (juejin.cn) STM32L0 系列 EEPROM 读写,程序卡死?_stm32l0片内eeprom_stm3…

Android studio配置代码模版

一、背景: 在工作中,总是要写一些重复的代码,特别是项目有相关规范时,就会产生很多模版代码,每次要么复制一份,要么重新写一份新的,很麻烦,于是我就在想,能不能像创建一…

tomato靶场

扫描网址端口 访问一下8888 我们用kali扫描一下目录 访问这个目录 产看iofo.php源码,发现里面有文件包含漏洞 访问/etc/passwd/发现确实有文件包含漏洞 远程连接2211端口 利用报错,向日志文件注入木马,利用文件包含漏洞访问日志文件 http:/…

现代前端架构介绍(第二部分):如何将功能架构分为三层

远离JavaScript疲劳和框架大战,了解真正重要的东西 在这个系列的前一部分 《App是如何由不同的构建块构成的》中,我们揭示了现代Web应用是由不同的构建块组成的,每个构建块都承担着特定的角色,如核心、功能等。在这篇文章中&#…

手机市场回暖,为何OPPO却“遇冷”?

在智能手机这片红海中,OPPO曾以其独特的营销策略和创新的产品设计,一度占据国内市场的领先地位。然而,近期的数据却揭示了OPPO正面临前所未有的挑战,销量下滑、库存高企,昔日的辉煌似乎已成过眼云烟。 当整个手机市场逐…

单个或两个及以上java安装与环境变量配置

目录 java下载地址: 1.安装java 1.1 安装程序 1.2选择安装路径 1.3等待安装 2.首先,进入环境变量 2.1 找到设置(第一个win11,第二个win10) 2.2 进入到系统高级系统设置(第一个win11,第二…

快捷生成vue模板插件

Vetur < 就可以选择快捷键

Java多线程实现的两种方式

Java多线程实现的两种方式 1. 继承Thread类2. 实现Runnable接口3.总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1. 继承Thread类 直接继承java.lang.Thread类&#xff0c;并重写其run方法。这种方式简单直接&#xff0c;但限制了类…

Python3接口测试框架的整体布局与设计

实战项目整体布局概览 本实战项目基本的层级结构如下&#xff1a; 习惯性的命名规则&#xff0c;把所有的辅助类py文件放在commonsrc这个包里面&#xff0c;如数据库配置封装文件、接口配置封装文件等&#xff1b;辅助类py文件在整个项目中初期代码写好后一般是不会去大范围修…

Character.AI的联合创始人Noam Shazeer将加入谷歌;又一个开源平替llamacoder;和mem0一样的动态记忆框架

✨ 1: Character.AI 创始人回归google Character.AI的联合创始人Noam Shazeer将加入谷歌 Character.AI的联合创始人Noam Shazeer和Daniel De Freitas离开公司&#xff0c;重新加入Google旗下的DeepMind研究团队。Google签署了一项非独占性协议&#xff0c;使用Character.AI的…

Java8新特性(二) Stream与Optional详解

Java8新特性&#xff08;二&#xff09; Stream与Optional详解 一. Stream流 1. Stream概述 1.1 基本概念 Stream&#xff08;java.util.stream&#xff09; 是Java 8中新增的一种抽象流式接口&#xff0c;主要用于配合Lambda表达式提高批量数据的计算和处理效率。Stream不是…

远程控制电脑的正确姿势,3大神器助你秒变技术达人!

现在的生活节奏快得跟打鼓似的&#xff0c;不管是在家工作、帮朋友修电脑&#xff0c;还是想控制家里的播放器放个电影&#xff0c;远程控制电脑这事儿越来越重要了。有没有遇到过想用电脑却够不着的尴尬&#xff1f;别急&#xff0c;今天咱们就来看看怎么搞定远程控制电脑&…