前端开发之SEO(搜索引擎优化)_前端seo搜索引擎优化_chowhound3的博客-程序员宅基地

技术标签: 前端  html  搜索引擎  

前端开发之SEO(搜索引擎优化)


前言

此文章是我看到两篇总结得非常好的文章,但怕之后链接失效,就复制了大部分内容,并对其中一些内容做了些修改或补充。原链接在结尾处。
  SEO(search engine optimization),传说中的搜索引擎优化。是指为了增加网页在搜索引擎自然搜索结果中的收录数量以及提高网站排名而做的优化行为。作为前端开发工程师,你不需要精通SEO,但你必须要了解它。它没有一成不变的方案供大家套用,但总有一些人们公认的规律可以对网站进行SEO。更重要的是我们要有自己的实践,不断发现适合自己行之有效的SEO方法。
从宏观的角度来说,SEO有三条最重要的规律,那就是原创的内容、高质量的外部链接和持之以恒的适度优化。
  前端是构建网站中很重要的一个环节,本篇重点从前端的角度来讲解一下SEO的实施方法。前端的工作主要是负责页面的HTML+CSS+JS,优化好这几个方面会为SEO工作打好一个坚实的基础。突出重要内容可以让搜索引擎判断当前页面的重点是什么,提升网站访问速度可以让搜索引擎的蜘蛛顺利、快速、大量的抓取网页内容,所以以下我就着重以突出重要内容和提升网站速度为主来总结一下。


一、突出重要内容

合理的title、description和keywords

虽然现在搜索对这三项的权重慢慢减小,但还是希望能够合理的写好他们,只写有用的东西,不要在这里写小说,要表达重点。
在这里插入图片描述

title:只强调重点即可,重要关键词出现不要超过2次,而且要靠前,每个页面title要有所不同。
description:把网页内容高度概括到这里,长度要合理,不可过分堆砌关键词,每个页面description要有所不同。
keywords:列举出几个重要关键词即可,也不可过分堆砌。

<!-- 书写顺序按照  标题 -> 描述 -> 关键字 依次 -->
<title>唯品会-正品低价、品质保障、配送及时、轻松购物 !</title>
<meta
  name="description"
  content="唯品会-专业的综合网上购物商城,为您提供正品低价的购物选择、优质便捷的服务体验。商品来自全球数十万品牌商家,囊括家电、手机、电脑、服装、居家、母婴、美妆、个护、食品、生鲜等丰富品类,满足各种购物需求。"
/>
<meta name="keywords" content="网上购物,网上商城,家电,手机,电脑,服装,居家,母婴,美妆,个护,食品,生鲜"/>

语义化书写HTML代码,符合W3C标准

对于搜索引擎来说,最直接面对的就是网页HTML代码,如果代码写的语义化,搜索引擎就会很容易的读懂该网页要表达的意思。例如文本模块要有大标题,合理利用h1-h6(注意:一个页面h1只可有一个),列表形式的代码使用ul或ol,重要的文字使用strong等等。总之就是要充分利用各种HTML标签完成他们本职的工作,当然要兼容IE、火狐、Chrome等主流浏览器。
  我们来看看著名的禅意花园网站(http://www.csszengarden.com/),在没有样式的情况下,代码非常语义化,看起来很工整,加载不同的样式之后可以随心所欲的改变页面外观。

无样式情况下:
在这里插入图片描述
加载样式后:
在这里插入图片描述

利用布局,把重要内容HTML代码放在最前

搜索引擎抓取HTML内容是从上到下,利用这一特点,可以让主要代码优先读取,广告等不重要代码放在下边。例如,在左栏和右栏的代码不变的情况下,只需改一下样式,利用float:left;和float:right;就可以随意让两栏在展现上位置互换,这样就可以保证重要代码在最前,让爬虫最先抓取。同样也适用于多栏的情况。
在这里插入图片描述

重要内容不要用JS输出

蜘蛛不会读取JS里的内容,所以重要内容必须放在HTML里。

尽少使用iframe框架

搜索引擎不会抓取到iframe里的内容,重要内容不要放在框架中

为图片加上alt属性

<img src="global.jpg" width="300" height="200" alt="global">

当网络速度很慢,或者图片地址失效的时候,就可以体现出alt属性的作用,他可以让用户在图片没有显示的时候知道这个图片的作用
在这里插入图片描述

需要强调的地方可以加上title属性

<!-- 
	内部链接,要加 title 属性加以说明
	外部链接,可加 rel="nofollow" 属性,告诉蜘蛛无需追踪,传递权重
 -->
<a href="http://www.360.cn" title="360安全中心" class="logo"></a>

部分语义化标签和语义化结构标签

1、strong 和 em 都表示强调,strong 显示为粗体 em 显示为斜体,且 strong 的强调程度要比 em 更高

<em>强调文本</em> <strong>强调文本</strong>

2、视觉上突出显示文本

<!--如:搜索结果中高亮的关键词-->
<mark></mark>

3、h1 ~ h6 标签

  • h1 一个页面只可有一个,首页多用于包含 logo,其他页面用于主标题
  • h2 模块标题
  • h3 段落的小节标题
  • h4, h5,h6 基本上不使用

4、section 标签使用场景
  对页面中的内容进行分块,一个 section 元素通常由标题以及内容组成
  注:不推荐那些没有标题的内容使用 section 标签

<header></header>
  <section>
    <h2>标题</h2>
    <p>段落内容</p>
  </section>
  <section>
    <h2>标题</h2>
    <div>
      <img src="global.jpg" width="300" height="200" alt="global">
      <a href="http://www.360.cn" title="360安全中心" class="logo"></a>
    </div>
  </section>
  <footer></footer>

5、aside 使用场景
aside:独立于内容的一部分,且可以被单独的拆分出来而不会使整体受影响,常用于定义页面侧边栏

<aside>
  <h2></h2>
  <ul>
    <li></li>
    <li></li>
  </ul>
</aside>

6、header 使用场景
article、section、aside、nav 标签都可以拥有自己的 header 和 footer 标签

<!-- 页面中的 header -->
<header>
  <h1 role="logo">
    <a href="/">文字Logo</a>
  </h1>
  <nav>
    <a href="/">首页</a>
    <a href="/product">产品介绍</a>
    <a href="/about">关于我们</a>
  </nav>
</header>
<!-- 分块中的 header -->
<section>
  <header>
    <h2>标题</h2>
    <p>信息介绍</p>
  </header>
  <p>分块内容段</p>
</section>
<!-- 文章中的 header -->
<article>
  <header>
    <h2>标题</h2>
    <p>
      发表日期:
      <time datetime="2022-06-01 12:00">2022-06-01</time>
    </p>
  </header>
  <p>文章内容段</p>
</article>

保留文字效果

如果需要兼顾用户体验和SEO效果,在必须用图片的地方,例如个性字体的标题,我们可以利用样式控制,让文本文字不会出现在浏览器上,但在网页代码中是有该标题的。
  例如这里的“电视剧分类”,为了完美还原设计图,前端工程师可以把文字做成背景图,之后用样式让html中的文字的缩进设置成足够大的负数,偏离出浏览器之外,也可以利用设置行高的方法让文字隐藏。注意:不可使用display:none;的方法让文字隐藏,因为搜索引擎会过滤掉display:none;里边的内容,就不会被蜘蛛检索了。
  在这里插入图片描述

<!-- html代码 -->
<h2 class="tit">电视剧分类</h2>
<!-- css代码 -->
.tit{
    font-size:18px;height:25px;line-height:25px;overflow:hidden;text-indent:-9999px;}
或
.tit{
    font-size:18px;height:25px;line-height:50px;overflow:hidden;}

利用CSS截取字符

如果文字长度过长,可以用样式截取,设置高度,超出的部分隐藏即可。这样做的好处是让文字完整呈现给搜索引擎,同时在表现上也保证了美观。

在这里插入图片描述

二、提升网站速度

尽量外链CSS和JS,保证网页代码的整洁,也有利于日后维护。

CSS放在文件头部,JS放在文件尾部,可使用工具对CSS和JS文件进行压缩

<link rel="stylesheet" href="css/style.css" />
<script src="js/comm.js"></script>

CSS Sprites(雪碧图)

减少HTTP请求。利用CSS Sprites技术可以把网页用到的切片合成到一张图上,这样做既减少了HTTP请求数,又使得样式图片一次加载,避免网页“白”的尴尬。

在这里插入图片描述

伪静态设置

如果是动态网页,可以开启伪静态功能,让蜘蛛“误以为”这是静态网页,因为静态网页比较合蜘蛛的胃口,如果url中带有关键词效果更好。

动态地址:
  http://www.360.cn/index.php

伪静态地址:
  http://www.360.cn/index.html

其它

  • 为图片设置高度和宽度,可提高页面的加载速度;
  • 为静态资源文件增加过期时间,让用户通过本地缓存来更快的访问网站;
  • 减少大改版的频率;
  • 压缩、格式化代码;
  • 不使用CSS表达式,会影响效率;
  • 使用CDN网络,可加快用户访问速度;
  • 启用GZIP压缩,浏览速度变快,搜索引擎的蜘蛛抓取信息量也会增大;
  • 做 404 页面,不仅提高蜘蛛体验,也提高用户体验;

总结

不要耍小聪明,利用已掌握的技术想方设法欺骗搜索引擎,可能会在短时间内有明显的效果,排名提升等,但搜索引擎发现后会果断降权你的网页或直接封杀,得不偿失。
  希望本文能让大家正确认识SEO,SEO要适度,网站还是要以“内容为王”,有好的内容网站才会有发展。
转载原本地址:
1、https://www.bbsmax.com/A/l1dypNE95e/
2、https://www.zhihu.com/question/495173947/answer/2776099595

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46653360/article/details/129549920

智能推荐

解决Android Studio 不自动提示问题_android studio没有提示_冯旭_Android的博客-程序员宅基地

解决Android Studio 不自动提示问题第一种 :一般是由于Android ButterKnife Zelezny插件导致的,在Settings=>Plugins里卸载掉后File---restart IDE 解决!

AutoML论文笔记(三)Semi-Supervised Neural Architecture Search:基于半监督学习的神经网络架构搜索_霸王龙Alvin的博客-程序员宅基地

文章题目:Semi-Supervised Neural Architecture Search链接:link https://arxiv.org/abs/2002.10389会议期刊:CVPR 2020论文阅读笔记,帮助记忆的同时,方便和大家讨论。因能力有限,可能有些地方理解的不到位,如有谬误,请及时指正。论文内容亮点和收获...

自动驾驶领域用到的一些数据集_海 清的博客-程序员宅基地

原文链接:https://mp.weixin.qq.com/s?__biz=MzA3NDIyMjM1NA==&amp;mid=2649030409&amp;idx=1&amp;sn=2202eba9d4f38acacc46da72f1e6eb86&amp;chksm=87134174b064c8627d904ca31cbb723a614d4223ef67c7642fbde5e6cfb57eee2...

windows7下php扩展调用动态链接库dll_阿七七七的博客-程序员宅基地

本人是php的菜鸟(入门都还不算,c++也才入门),很多说的不对的地方请多多包涵。因为涉及到要用php调用c++的动态链接库,所以在网上搜了很多资料。最初海量的搜了很多,第一种方法是做成com组件调用,但是要调用的是普通的dll,所以失败。而后有看到一篇调用非com组件的,通过dynwrap.dll调用,但是一直试不出来,如今回头看可能是版本和位数的问题,应该也是可行的。最后一种就是php扩展了,...

STM32定时器-定时器与外部触发的同步以及(两个)定时器同步_stm32f103 两个定时器同步_ICer_Wx的博客-程序员宅基地

定时器与外部触发的同步1.复位模式:计数器使用内部时钟计数,然后正常运转,直到出现TI1上升沿,当TI1出现上升沿时,计数器清零然后重新从零开始计数。TI1上升沿与实际计数器复位之间的延迟是由于TI1输入的重新同步电路引起的。2.门控模式:低电平计数,高电平不计数3.触发模式:原本不计数,检测TI2上升沿,计数器启动。(默认为内部CLK)4.外部时钟模式2 + 触发模式:用ETR作为时钟信号。定时器同步1.一个定时器作为另一个定时器的预分频器。2.一个定时器使能另一个定时器。

小爬爬的进化史---小白的爬虫养成_小爬爬长什么样_好头发用飘影的博客-程序员宅基地

小爬爬养成计划1、小爬爬的诞生2、小爬爬的兄弟个子更高吗?3、小爬爬瘦身计划4、小爬爬的分身术1、小爬爬的诞生前两天看大神的爬虫文章,自己照着写了一个。经过多次修改,和之前的就大不一样了。开始只是简单的图片下载,从一个页面中下载所有的图片,代码如下:import refrom bs4 import BeautifulSoupimport requestsdef get_html(url): headers={'User-Agent':'Mozilla/5.0 (Windows NT

随便推点

UE4获取QQ昵称_董国政的博客-程序员宅基地

UE4获取QQ昵称可以作为一种校验手段还可以用qq作为版本号或者通过qq修改客户端内容玩法有很多,大家自己探索把

堆栈指针寄存器 SP详解以及栈的作用_sp寄存器_ 蓝色鲜橙多的博客-程序员宅基地

本文引用地址:http://www.eepw.com.cn/article/201611/321963.htm韦东山:https://blog.csdn.net/thisway_diy/article/details/76422943堆栈是一种具有“后进先出”(LIFO---Last In First Out)特殊访问属性的存储结构。堆栈一般使用RAM 物理资源作为存储体,再加上LI...

模式识别与机器学习(二)_weixin_30781107的博客-程序员宅基地

视屏链接类间距离测度方法最近距离法\(D_{kl} = min_{i,j} \lfloor d_{ij}\rfloor {a}\)\(d_{ij}\)表示 \(\vec x_i \in w_k\) 和 \(\vec x_j \in w_l\) 之间的距离用于链式结构分布的数据中最远距离法\(D_{kl} = max_{i,j} \lfloor d_{ij}\rfloor...

H5 - video.Js 视频播放(video)_置二的博客-程序员宅基地

1、属性preload = &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;auto&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; 是否预加载数据值:auto - 页面加载后载入整个数据meta - 页面加载后载入数据none - 不载入视频

loadView、viewDidLoad及viewDidUnload的关系_M了个J的博客-程序员宅基地

标题中所说的3个方法,都是UIViewController的方法,跟UIViewController的view属性的生命周期息息相关。接下来我会一一阐述它们的作用以及它们之间的联系。loadView1.什么时候被调用?每次访问UIViewController的view(比如controller.view、self.view)而且view为nil,loadView方法就会被调用。2.

pppoe按需连接服务器无响应,pppoe服务器无响应怎么解决_pppoe拨号失败怎么办_橘右京-我爱你的博客-程序员宅基地

pppoe服务器无响应怎么解决很多小伙伴在连接路由器中有碰到pppoe拨号服务器无响应的情况,用户需要排查出问题的原因等来进行解决,pppoe拨号服务器无响应怎么解决,小编来为大家介绍。请按照以下方法排查:1、检查物理链路可能原因:线路接错或者网线接口接触不良。解决办法:请根据您的入户宽带线路类型,确认线路连接正确;如果线路连接正常,但WAN口指示灯不亮,检查是否网线接口接触不良,请换一条网线尝试...

推荐文章

热门文章

相关标签