页面渲染主要经过过程,具体介绍如下:
字节 → 字符 → 令牌 → 节点 → 对象模型
CSS树的生成和DOM树的生成基本是相同,如下
为什么会有CSS树
因为CSS关系也会有父子关系,就是css中常说的继承,一些样式如font-size等子元素会继承父级,所以会生成一套对应的CSS树和DOM树相对应。
通过上面的页面渲染介绍,很容易理解,重排就是重新布局页面结构,计算节点位置,而重绘就是绘制页面,只是一些样式如背景,颜色的变化等,不需要重新计算位置布局,所以 重排一定会导致重绘,但是重绘不一定导致重排。
导致页面重排主要有以下几点
上文中触发了四次重排,通过上文介绍,offsetTop,scrollTop,clientTop等属性的修改会触发重排,当浏览器获取DOM样式的时候立刻会执行一次重排,因为需要计算浏览器位置坐标,不会再继续观察下文是否还有DOM的 *** 作,下文介绍浏览器渲染机制。
这种情况看似会触发四次重排,实际只会触发一次重排,现代浏览器基本都有渲染机制,浏览器会批量将样式修改一次性执行,批量修改完后再批量获取DOM位置,实际只触发一次。
等价于
通过上文,容易理解这种情况会触发两次重排,可以使用缓存(实际是分离读写)来优化。
这种情况会触发五次重排
避免设置大量的style属性,因为通过设置style属性改变结点样式的话,每一次设置都会触发一次reflow,所以最好是使用class属性实现元素的动画,设置position属性,最好是设为absoulte或fixed,脱离文档流,这样不会影响其他元素的布局。
事件委托原理:利用事件冒泡的特性,子元素都会冒泡到父元素上,当子元素如(li)元素都绑定事件时,可以只需绑定父元素(ul)来达到相同的效果,这样不仅减少了对dom的 *** 作,减少重排或重绘,而且不用分配大量变量来保存dom,减少了内存。
委托
不要使用table布局,因为table中某个元素一旦触发了reflow,那么整个table的元素都会触发reflow。那么在不得已使用table的场合,可以设置table-layout:auto或者是table-layout:fixed这样可以让table一行一行的渲染,这种做法也是为了限制reflow的影响范围。
不要一个个修改属性,应通过一个class来修改
改为
参考文献
https://blog.csdn.net/b954960630/article/details/82317999
HTML代码的几个优化重点一、Title 标签
Title 标签能够告诉用户和搜索引擎网页页面的主题思想是什么,一直是搜索引擎的抓取重点。通常,搜索引擎抓取Title标签出于两个目的:作为影响网页排名的重要因素和作为搜索结果页面的显示信息。不管是哪一个目的,对我们做SEO来说都非常重要。
一般来说,Title标签中的单词最好保持在3~6个左右,最好包含关键字。但Title标签中的单词不要全部都是关键字,因为这样可能会造成页面关键字堆砌,导致过度优化。所选单词应简洁明了、具有描述性,要与网页内容具有很大的相关性,并且每个不同的页面都应该包含Title标签。
二、Meta Description标签
对Title标签优化之后,接下来就是对Meta Description标签的优化。Meta Description标签可以说是对Title标签的进一步解释,可以是一句话或者是包含十几个单词的短语。每个页面都该有其自己的Meta Description标签,并且Meta Description标签还可包含一些与网站内容相关但Title标签中未提及的信息。与Title标签要求相似,该部分内容也应具有描述性,与网页内容具有相关性,可包含关键字,但不可过多。
三、Heading标签 (H1 - H6 标签)
Heading标签包含了H1、H2、H3等等,是搜索引擎识别页面信息的重要标记。合理使用H1、H2、H3等不同级别的标签能够使得页面结构更加清晰,有利于搜索引擎的抓取。H1、H2、H3等标签是按照重要程度来排名的。一般一个页面按照需求程度来适当添加该标签:从H1开始,依次往下添加。但不可添加太多Heading标签,否则会适得其反。
四、Strong和B标签
相信大多数朋友都知道Strong和B标签都有加粗的意思,但是很多人并不清楚两者具体有什么区别。其实B标签就是单纯地将文字加粗,而Strong标签不仅是对文字加粗,并且这种形式的加粗会告诉搜索引擎该部分文字比较重要。所以两者从搜索引擎优化的角度来看,是有很大的区别的。
上文中所提到的Heading标签页具有加粗效果,那么这三种标签到底该怎么用?其实,Heading标签一般用于文章大标题以及每段的小标题,而Strong标签一般用于文章段落中的重点词汇,而B标签一般只是强调一种视觉效果。
五、ALT标签
ALT标签是一种图片标签,它将图片的信息以文本的形式展现。对ALT标签的使用没有太多要求,只要在网页中出现图片的部分添加上该属性即可,但其标签内容应与相应页面内容具有相关性,长度不得过长,一般1~5个单词即可。
以上介绍了HTML代码中的五种重要标签,相信会对做SEO工作的人员特别是SEO新手具有很大帮助。对HTML代码的优化一直是我们做搜索引擎优化工作的非常基础并且重要的一部分,只有做好了这部分优化工作,我们才能开展更加深层的优化。
html标签权重分值排列 分值
内部链接文字10分
标题title10分
域名7分
H1,H2,字号标题5分
每段首句5分
路径或文件名4分
文本用法(内容)1分
title属性(例如: a href="" title="")1分
alt标记0.5分
一:html代码头部即head标签的seo设置。
1:<meta charset=”UTF-8″>:指明网站编码。
2:<title>SEO教程自学网_网站SEO优化教程学习『武汉小明SEO』</title>:网站标题设置,标题里面的语句字字千金,需着重把握。
3:<meta name=”description” content=”SEO教程自学网,解答seo是什么,武汉小明专业研究搜索引擎优化,致力网站SEO优化教程学习以及seo技术教程培训,提供自学seo视频教程免费观看。” />:网站描述设置,描述也能影响目标关键词排名。
4:
<meta http-equiv=”Cache-Control” content=”no-transform” /><meta http-equiv=”Cache-Control” content=”no-siteapp” />
<meta name=”applicable-device” content=”pc,mobile”>
<meta name=”MobileOptimized” content=”width”/>
<meta name=”HandheldFriendly” content=”true”/>
移动禁止转码声明。
5:<script src=”//msite.baidu.com/sdk/c.js?appid=1567888488359210″></script>:百度熊掌号ID声明。现目前熊掌号是大势所趋,很有必要。
6:<link rel=”canonical” href=”http://www.xminseo.com”/>:百度明文规定支持的一种标签,目的是给搜索引擎传达信息:来抓取网站管理者想要呈现的重要内容。
7:其他方面的设置,如301重定向,404页面等。
二:html代码其余部分进行seo设置。
1:<h1><span class=”yusi-mono”>SEO教程自学网</span></h1>。
h1标签是权重标签,建议一个页面使用一次即可。
2:<strong class=”text-success”></strong>。
个人认为,strong标签有强调作用,比B标签效用更好。
3:
<a target=”_blank” href=”https://www.xminseo.com/2390.html” title=”seo经验案例分享”><img src=”https://www.xminseo.com/wp-content/uploads/2017/09/2-2.png” title=”seo经验案例分享” alt=”seo经验案例分享” /></a>。图片必须添加alt标签,搜索引擎根据alt标签中的内容来识别图片。
4:
<script type=”application/ld+json”>{
“@context”: “https://zhanzhang.baidu.com/contexts/cambrian.jsonld”,
“@id”: “https://www.xminseo.com/2747.html”,
“title”:”有关Canonical标签的一些说明”,
“images”: [
“https://www.xminseo.com/wp-content/uploads/2017/10/1-10.jpg” ],
“description”: “&nbsp 如果网站中有大量网址形式不同而内容相同的页面,那么从网站seo优化的角度来看,是有问题的。不同的网址都可以访问同样内容的页面,会给有可能引起搜索引擎的误判。Canonical标签的出现,”,
“pubDate”: “2017-10-22T12:57:35”,
“isOriginal”: “0”
}
</script>
熊掌号页面改造代码,经过相关代码设置,能让页面符合熊掌号规范。
5:
<script>(function(){
var bp = document.createElement(‘script’)
var curProtocol = window.location.protocol.split(‘:’)[0]
if (curProtocol === ‘https’) {
bp.src = ‘https://zz.bdstatic.com/linksubmit/push.js’
}
else {
bp.src = ‘http://push.zhanzhang.baidu.com/push.js’
}
var s = document.getElementsByTagName(“script”)[0]
s.parentNode.insertBefore(bp, s)
})()
</script>
主动推送相关代码,借助用户行为,点击之后自动推送给百度搜索引擎。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)