JavaScript SEO:如何为搜索引擎优化 JS

什么是 JavaScript SEO?

JavaScript SEO 是技术 SEO 的一部分,其重点是使使用 JavaScript 构建的网站更容易被搜索引擎抓取、呈现和索引。

常见任务包括以下内容:

  • 优化通过 JavaScript 注入的内容
  • 正确实施懒加载
  • 遵循内部链接最佳实践
  • 预防、查找和修复 JavaScript 问题

注:如果您需要重温基本的 JS 知识,请阅读我们的指南: 什么是 JavaScript?

Google 如何抓取和索引 JavaScript?

Google 分三个阶段处理 JavaScript:

  1. 抓取
  2. 渲染
  3. 索引


谷歌的网络爬虫(称为 Googlebot)会对网页进行排队抓取和渲染。

它抓取队列中的每个 URL。

Googlebot 发出请求。然后服务器发送 HTML 文档。

接下来,Googlebot 决定需要哪些资源来呈现页面内容。

这意味着它会抓取 HTML。而不是 JS 或 CSS 文件,因为渲染 JavaScript 需要大量资源。

想想看,Googlebot 要下载、读取和运行近 20 亿个网站上数万亿个页面的 JS,需要多少计算能力。

因此,谷歌推迟了 JavaScript 的渲染。它将未执行的内容排在队列中,待资源允许时再进行处理。

一旦资源允许,无头 Chromium(无用户界面的 Chrome 浏览器)就会渲染页面并执行 JavaScript。

Googlebot 会再次处理渲染后的 HTML 以查找链接。并将找到的 URL 列入抓取队列。

在最后一步,Google 会使用渲染的 HTML 为页面编制索引。

服务器端渲染 vs. 客户端渲染 vs. 动态渲染

Google JavaScript 索引问题主要取决于网站如何呈现这些代码:服务器端、客户端或动态呈现。

服务器端渲染

服务器端渲染(SSR)是指在服务器上渲染 JavaScript。然后将渲染好的 HTML 页面提供给客户端(浏览器、Googlebot 等)。

例如,当你访问一个网站时,你的浏览器会向保存网站内容的服务器发出请求。

请求处理完毕后,浏览器会返回渲染好的 HTML 并显示在屏幕上。

SSR 往往有助于网页的搜索引擎优化性能,因为

  • 它可以缩短页面主要内容的加载时间
  • 可以减少有损用户体验的布局偏移

但是,SSR 会增加页面允许用户输入的时间。

这就是为什么一些大量使用 JS 的网站会选择在某些页面使用 SSR,而不在其他页面使用。

在这种混合模式下,SSR 通常只用于对搜索引擎优化有重要意义的页面。而客户端渲染(CSR)通常保留给需要大量用户交互和输入的页面。

但是,对于开发人员来说,实施 SSR 通常是复杂而具有挑战性的。

不过,还是有一些工具可以帮助实现 SSR:

  • 用于 React 框架的 Gatsby 和 Next.JS
  • 用于 Angular 框架的 Angular Universal
  • 用于 Vue.js 框架的 Nuxt.js

客户端渲染

CSR 与 SSR 相反。在这种情况下,JavaScript 使用文档对象模型(DOM)在客户端进行呈现。

你得到的不是像服务器端渲染那样从 HTML 文档中接收内容,而是一个带有 JavaScript 文件的基本 HTML,该文件通过浏览器渲染网站的其余部分。

大多数使用 CSR 的网站都有复杂的用户界面或许多交互。

动态渲染

动态渲染是服务器端渲染的一种替代方式。

它能检测到可能会对 JS 生成的内容产生问题的机器人,并提供不含 JavaScript 的服务器渲染版本。

同时向用户显示客户端渲染版本。

动态呈现只是一种变通方法,并不是 Google 推荐的解决方案。它为 Google 带来了额外的、不必要的复杂性和资源。

如果您的网站规模较大,内容变化较快,需要快速索引,您可以考虑使用动态呈现。

或者,如果您的网站依赖于社交媒体和聊天应用程序,需要访问页面内容,也可以考虑使用动态呈现。

或者,如果对网站很重要的爬虫无法支持 JS 的某些功能。

但实际上,动态呈现很少是一个长期的解决方案。您可以从 Google 的指南中了解更多有关设置动态呈现的信息和一些替代方法。

注意:Google 一般不认为动态呈现是 “隐身”(向搜索引擎和用户呈现不同内容的行为)。虽然由于其他原因,动态呈现并不理想,但它不太可能违反 Google 垃圾邮件政策中的隐匿规则。

如何使网站的 JavaScript 内容对搜索引擎友好

您可以遵循以下几个步骤来确保搜索引擎正确抓取、呈现和索引您的 JavaScript 内容。

使用Google Search Console查找错误

Googlebot 基于 Chrome 浏览器的最新版本。但它的行为方式与浏览器不同。

这意味着启动网站并不能保证 Google 可以呈现网站内容。

Google Search Console(GSC)中的URL检测工具可以检查谷歌是否能呈现你的网页。

在顶部输入您要测试的页面的 URL。然后点击回车。

然后,点击最右侧的 "测试实时 URL "按钮。

一两分钟后,工具会显示一个 "实时测试 "选项卡。现在,点击 “查看测试过的页面”,就会看到页面代码和截图。

点击 "更多信息 "选项卡,检查是否有任何不一致或缺失的内容。

Google 无法呈现 JS 页面的一个常见原因是您网站的 robots.txt 文件阻止了呈现。这通常是意外造成的。

在 robots.txt 文件中添加以下代码,确保关键资源不会被阻止抓取:

User-Agent: Googlebot
Allow: .js
Allow: .css

注意:Google 不会在搜索结果中索引 .js 或 .css 文件。它们用于呈现网页。

没有理由阻止这些关键资源。这样做可能会阻止您的内容被呈现,进而被索引。

确保 Google 索引 JavaScript 内容

一旦确认页面呈现正常,请确保它们被索引。

您可以在 GSC 或搜索引擎本身进行检查。

要在 Google 上检查,请使用 "site: "命令。例如,将下面的 yourdomain.com 替换为您要测试的页面的 URL:

site:yourdomain.com/page-URL/

如果页面已被索引,就会显示结果。就像这样

如果没有,说明页面不在 Google 索引中。

如果页面已被收录,请检查 JavaScript 生成的部分内容是否已被收录。

同样,使用 "site: "命令并在页面中包含一段 JavaScript 内容。

例如

site:yourdomain.com/page-URL/ "snippet of JS content"

您正在检查 JS 内容的这一特定部分是否已被索引。如果已被收录,您将在片段中看到它。

就像这样

您还可以使用 GSC 查看 JavaScript 内容是否被索引。再次使用 URL 检测工具。

这次不要检测实时 URL,而是点击 "查看抓取的页面 "按钮。然后检查页面的 HTML 源代码。

扫描 HTML 代码,查找 JavaScript 内容片段。

如果看不到 JavaScript 内容,可能有以下几种原因:

  • 内容无法呈现
  • 无法发现 URL,因为在点击时,JS 正在生成指向它的内部链接
  • 在 Google 索引内容时页面超时

运行网站审计

定期对网站进行审计是搜索引擎优化的最佳技术实践。

Semrush的网站审计工具可以像谷歌一样抓取JS。即使它是在客户端渲染的。

要开始,请输入您的域名,然后点击 “创建项目”。

然后,在爬虫设置中为 JS 渲染选择 “已启用”。

抓取后,您可以在 "问题 "选项卡下找到任何问题。

常见的 JavaScript SEO 问题及如何避免这些问题

以下是一些最常见的问题,以及一些 JavaScript SEO 最佳实践:

  • 在 robots.txt 文件中阻止 .js 文件会阻止 Googlebot 抓取这些资源。这意味着它无法呈现和索引这些资源。允许抓取这些文件可避免这一问题。
  • Google 不会长时间等待 JavaScript 内容呈现。您的内容可能会因为超时错误而无法被索引。
  • 搜索引擎不会点击按钮。使用内部链接帮助 Googlelebot 发现网站页面。
  • 在使用 JavaScript 懒加载页面时,不要延迟加载应被索引的内容。在设置懒加载时,主要关注图片而非文本内容。
  • Google 通常会忽略哈希值,因此请确保为网站网页生成静态 URL。确保您的网址看起来像这样:(yourdomain.com/web-page)。而不是这样(yourdomain.com/#/web-page)或这样(yourdomain.com#web-page)。
    更进一步

如果你能运用所学到的 JavaScript SEO 知识,你就能创建出排名靠前、深受用户喜爱的高效网站。

最后

如果你想学好SEO这门技术或者你需要seo的学习资料可通过下方的图片扫描后或者seo的学习资料

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

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

相关文章

国图公考:2024年度国考笔试成绩、合格分数线已出

中央机关及其直属机构2024年度考试录用公务员笔试成绩和合格分数线公布,考生可于即日起登录“中央机关及其直属机构2024年度考试录用公务员专题网站”查询。 按照笔试成绩从高到低的顺序,进面人员名单也已经公布。 如果没有进面也可以报考调剂&#xf…

探索自动化测试断言:提升测试效率与质量的关键!

前言 断言在自动化测试中起着关键的作用,它是验证测试结果是否符合预期的重要手段。如果在自动化测试过程中忽视了断言,那么这个测试就失去了其本质的意义,因为我们无法得知测试结果是否达到了预期的效果。因此,断言在自动化测试…

完美解决idea一直indexing,无法操作的问题

今天主要分享一下在使用idea 2020.3版本开发maven项目的时候,一直出现有效件index, 有时候是scaning indexing, 有时候是update indexing, indexing的时候,idea基本上就没办法操作了,连跳入到类或方法里都跳不了。不厌其烦。 于是…

导出功能开发

1.导出功能(仅表头) package nc.ui.yhlypx.yhlypxfkd.ace.action;import java.awt.event.ActionEvent; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List;import nc.ui.pubapp.uif2app.model.BillManageModel; imp…

keycloak部署

https://downloads.jboss.org/keycloak/11.0.2/keycloak-11.0.2.zip 1.上传zip 并解压 uzip keycloak-11.0.2.zip 2.创建mysql数据库 CREATE SCHEMA keycloak DEFAULT CHARACTER SET utf8 ; 3.安装mysql的jdbc驱动 下载mysql的JDBC驱动(mysql-connector-java-8…

代码随想录 Leetcode15. 三数之和

题目&#xff1a; 代码(首刷看解析 2024年1月15日&#xff09;&#xff1a; class Solution { public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> res;int n nums.size();sort(nums.begin(),nums.end());for(…

如何在 Ubuntu 22.04 上使用 LEMP 安装 WordPress

前些天发现了一个人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;最重要的屌图甚多&#xff0c;忍不住分享一下给大家。点击跳转到网站。 如何在 Ubuntu 22.04 上使用 LEMP 安装 WordPress 介绍 WordPress 是互联网上最流行的内容管理系统 (CMS) 之一…

清华裴丹|大模型时代的AIOps

在大模型时代下&#xff0c;运维界普遍关注一些问题&#xff1a;大模型能带来哪些收益&#xff1f;面临哪些技术挑战&#xff1f;与以往的 AIOps小模型是什么关系&#xff1f;有了大模型之后&#xff0c;那么AIOps的整体框架是什么&#xff1f;近期、中期、长期有哪些应用&…

基于ssm的线上旅游体验系统+vue论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

工程项目管理系统源码与Spring Cloud:实现高效系统管理与二次开发

随着企业规模的不断扩大和业务的快速发展&#xff0c;传统的工程项目管理方式已经无法满足现代企业的需求。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;企业需要借助先进的数字化技术进行转型。本文将介绍一款采用Spring CloudSpring BootMybat…

java基础之线程知识点

线程 进程的概念 操作系统(OS)中并发(同时)执行的多个程序任务 进程的特点 宏观并行,微观串行 在一个时间段内,CPU会将时间段划分为若干个时间片,一个时间片是能被一个程序拥有,且只有拥有时间片的程序才能执行自身内容,所以当时间片的划分足够细小,交替频率足够快,就会形…

9 - 数据分片概述|部署MyCat服务

数据分片概述&#xff5c;部署MyCat服务&#xff5c;测试配置 数据分片概述分库分表分割方式水平分割&#xff08;横向切分&#xff09;垂直分割&#xff08;纵向切分&#xff09; 提供分库分表存储服务软件&#xff08;中间件&#xff09;MyCAT软件分片服务器的工作过程 部署M…

[Kubernetes]10. k8s部署Goweb+mysql项目实战演练

一.安装docker构建镜像 如果要本地构建镜像的话,对应节点还需要安装docker,安装教程见:[Docker]一.Docker 简介与安装 linux环境,centos8下 docker及docker compose安装教程 k8s部署Goweb+mysql项目有两种方法:第一种是传统部署方法,第二种是通过ConfigMap实现应用配置分离部署…

OPenCV中的开闭运算

闭运算是先膨胀再腐蚀的过程&#xff0c;可以用来清除小黑点 开运算同理 开运算是先腐蚀再膨胀的过程&#xff0c;可以清除一些小两点和毛刺 闭运算和开运算使用不同大小的结构元素是因为它们的目标不同。 闭运算的目标是尽量消除小黑点&#xff0c;保持较大的连通区域。因此…

最佳利用Mock提升测试效率的7个技巧!

再聊这个问题之前&#xff0c;我们先了解一下公司技术架构的演变过程&#xff0c;这样我们才能真正体会到我们为什么要使用 Mock功能。 单体应用 在早期&#xff0c; 大部分公司的应用技术栈主要可以分为两大类&#xff1a;LAMP&#xff08;Linux Apache MySQL PHP&#x…

1.50A、0.75A、1.50A、1.20A电流控制型比例马达放大器

1.50A、0.75A、1.50A、1.20A、0.70A、0.60A、1.40A控制电流型比例阀、比例泵、比例马达放大器&#xff0c;带数显区显示及当前参数现场可调&#xff0c;如指令、电流、上下斜坡、颤振频率等&#xff1b; 模块式及插头式外观&#xff0c;可现场调试各种参数&#xff1b; 兼容多…

TortoiseGit 2.15.0.0 安装与配置(图文详细教程)

TortoiseGit的安装与配置 TortoiseGit是Tortoise为Git提供的版本可视化工具&#xff0c;简化了记忆Git命令行的过程&#xff0c;将命令行可视化。 确保自己电脑中已经下载好了git 官网下载TortoiseGit Download – TortoiseGit – Windows Shell Interface to Git 选择64-bi…

如何定位和优化程序CPU、内存等性能之巅

如何定位和优化程序CPU、内存等性能之巅 摘要 性能优化指在不影响系统运行正确性的前提下&#xff0c;使之运行得更快&#xff0c;完成特定功能所需的时间更短&#xff0c;或拥有更强大的服务能力。本文将介绍性能优化的基本概念以及如何定位和优化程序中的CPU、内存和IO瓶颈…

树形控件中的子项点击显示按钮弹窗

效果 MainWindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include"QStandardItemModel" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass MainWindow : public QMainWindow {Q_OBJECTpublic:Main…

学习怎么能从复杂的开始?,开始学一个个人博客吧

做一个个人博客第一步该怎么做&#xff1f; 好多零基础的同学们不知道怎么迈出第一步。 那么&#xff0c;就找一个现成的模板学一学呗&#xff0c;毕竟我们是高贵的Ctrl c v 工程师。 但是这样也有个问题&#xff0c;那就是&#xff0c;那些模板都&#xff0c;太&#xff01;…