网站性能优化(website performance optimization)

news/2024/5/9 11:45:48/文章来源:https://blog.csdn.net/weixin_30588675/article/details/98809864

 提高代码运行速度,或许我们从来没有优化这些页面来提高速度

想要开发优秀的网站,你必须了解你的用户,知道他们想要达到什么目的,同时还要明白浏览器的工作原理,从而能够打造快速良好的体验,我最近在PageSpeed Insights 中运行了我的网页,得分最低,该工具给出了一些建议,但是我不太明白,例如如何移除渲染屏蔽的JavaScript,什么是异步脚本。这些问题都与关键呈现路径相关,关键呈现路径是指浏览器呈现网页要经历的一系列步骤,我觉得很多人都认为浏览器负责所有工作,但是你一旦理解了浏览器是如何构建DOM CSSOM对象模型布局和Paint你就可以构建能在一秒内呈现的网页

 

当你请求某个URL并按下Enter,浏览器就会想服务器发送一个请求,例如我们可以在命令行里模拟下浏览器收到响应后即我们在这里看到的HTML浏览器必须将所有的标记都转化为我们在屏幕上看到的这些内容,有没有想过这一切是怎么发生的?

浏览器会遵守定义完善的步骤并从处理HTML和构建DOM开始,HTML规范包含了一组规则,规定了我们应该如何处理接收的数据,例如在HTML中尖括号里包含的文本具有特殊含义,表示的是标记,因此每当我们遇到标记,浏览器都会发出一个令牌,这里是个以标签HTML开始的令牌,然后是head,这整个流程都由令牌生成器来完成,当令牌生成器在执行这些工作时,另一个流程正在消耗这些

令牌并将它们转换为节点对象,例如我们转换了第一个HTML令牌,并创建了HTML节点,然后消耗下一个令牌并创建head节点,节点之间有关系吗?是的,令牌生成器发出了起始和结束令牌,表明了节点之间的关系。

最终当我们消耗了所有这些令牌后,就形成了文档对象模型,简称DOM,它是一个树结构,表示了HTML的内容和属性以及各个节点之间的所有关系。

实际上,浏览器会逐步构建DOM,你可以利用这一点来提高网页的呈现速度,实际上google在这方面做的很棒,我来演示下

每当你向google发送一个搜索请求,服务器都会做出非常巧妙的响应,甚至在服务器知道搜索结果前,就会立即返回网页标题,就是在这里看到的,这一标题对所有用户来说都是相同的,这样浏览器能够开始处理响应并逐步构建DOM,甚至有可能呈现该标题

一旦搜索结果准备好后,剩余的HTML浏览器会解析并展示相关内容

可以看出,浏览器不用等待,所有的HTML都好了后再处理,你的服务器也不应该这样,实际上,返回解析的HTML是个很好的性能优化。逐步交付HTML太机智了。很好奇Google的工程师是怎么衡量和优化他们的网页性能的。

解析功能开始按步处理每个部分和我们之前描述的一样即生成令牌,将令牌转换为节点,并构建出DOM树。时间轴向我们详细展示了浏览器加载页面时执行的操作。

 

 

首先可以看到发送出去的css请求,它发生在收到第一部分HTML之后,这里解析器发现了链接标记并发起了css请求,然后我们等待获取css字节内容,然后我们看到Recalculate Style事件,这里我将css响应转换为css对象模型,我们的css非常小,所以只需要几毫秒就完成了转换。

但是对于更大型的样式表来说,肯定时间更长。

DOM包含了页面的所有内容,CSSOM包含了页面的所有样式,我如何将内容和样式转换成像素显示到屏幕上呢?觉得少了中间一步,你的想法不错,现在我们需要将DOM和CSSOM树组成渲染树,并捕获你刚刚提到的内容,渲染树的最重要特性是仅捕获可见内容,要了解具体的操作流程,我们来看看屏幕上的这个简单示例,顶部是DOM树,底部是CSS对象模型,要构建渲染树,我们从DOM树的根部开始,

这里是p节点,看看有没有任何相符的CSS规则,这里的确有一个相符的规则,让所有的字体大小都设置为16px并且为粗体,我们将p节点复制到渲染树里,处理完p节点后,我们向下浏览该树,然后我们看到“hello”是个文本节点,并将其复制到渲染树上,然后是span节点有一个相符的CSS规则,有一个span是段落节点的子节点,但是注意到这个规则的某个属性标记为display:none,表示这个span的内容不应呈现,因为我们提到渲染树仅捕获可见内容,

所以我们可以跳过它和它的所有子节点并转到下一节点,这里的话是另一个文本节点,我们将其复制到渲染树里

所以渲染树会同时捕获内容和样式。

这是Hello World页面的DOM和CSS树,要构建渲染树我们从DOM树的HTML节点开始,HTML和head部分不包含任何可见信息,多以我们快速地从渲染树里修剪它们,接着是body节点我们将其复制过来,树的左侧应该看起来比较熟悉,这是我们刚刚构建的部分,我们将其也复制过来,最终我们达到了div和img节点,这两个都包含可见内容,所以也复制到渲染树里,包括它们的样式,完成后将这个渲染树与屏幕的内容对比下,渲染树是个很好的展示结果,没有不必要的文本。

 

 现在已经接近尾声了,我们还需要弄明白最后一个问题就是所有元素应该放在页面的哪个位置撒花姑娘,改如何放置,这就是布局步骤,我们来看看,

 

现在只剩下绘制像素了。

当我们开始接收这个HTML时,我们就开始解析它,所以解释DOM是第一步,DOM可以逐步构建并非一次性完成所有响应,所以我们可能不会立即构建完毕,在head中我们将发现CSS和JavaScript的链接,然后我们就发出这些请求,但是有个陷阱,脚本是同步的,在获得CSSOM之前,我们无法执行它,所以我们需要需要尽快创建CSSOM,完成CSSOM将取消屏蔽JavaScritp引擎,所以我们将在收到JavaScript后立即执行它。JavaScript完成后我们就可以继续并完成DOM的构建,获得DOM和CSSOM后,我们将合并二者并构建渲染树,然后运行布局并绘制网页。

 

我们完成了关键呈现路径的各个部分,我们来从头到尾地看看时间轴是怎么汇总这些部分的。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/wlinglinux/p/6699341.html

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

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

相关文章

Windows服务器(阿里云)搭建IIS网站+配置入站规则+端口权限

一、IIS搭建:Windows Server 2019 搭建IIS环境 教程 - 付杰博客 二、入站端口配置(可以跳过,阿里后台配置就行,看第三步) 三、阿里服务器的入站配置 3.1、登陆阿里后台 3.2、配置规则

pc端的企业网站(IT修真院test9)详解一个响应式完成的pc端项目

一:引入bootstrap框架 昨天一直被bootstrap栅格系统折磨。 why? 我本来想一边码字,一边学习栅格布局的。but不成功。这时我头脑已经昏了。 下午,我查看了bootstrap的官网,带着我的问题:究竟怎么使用bootstrap的框架呢…

友盟统计网站需要收费吗_职业教育网站需要做推广吗?网站推广方法有哪些?...

职业教育网站唯有做好推广才能在众多网站中脱颖而出,既能带来流量还能树立品牌形象,有利于企业的发展,职业教育网站做网站推广方法还是挺多的,如SEO、SEM、软文推广、微博推广等等。随着移动互联网的迅速发展和产业结构升级的持续…

第三百八十八节,Django+Xadmin打造上线标准的在线教育平台—网站列表分页

第三百八十八节,DjangoXadmin打造上线标准的在线教育平台—网站列表分页 分页可以用一个第三方分页模块django-pure-pagination 下载地址:https://github.com/jamespacileo/django-pure-pagination#settings 下载后安装此模块即可 使用pure-pagination分…

jq审核通过重定向跳转_关于网站进行301跳转

网站301跳转就是把页面永久性移走,也叫301重定向,301转向。指的是当用户点击一个网址时,通过技术手段,跳转到指定的一个网站。301跳转多用于旧网址在废弃前转向新网址以保证用户的访问,在诸多服务器中,均支…

moss2007自定义网站栏不显示

用moss2007建立了一个blog站点, 默认文章显示为: 并在“文章”列表中加入了一个自定义的栏"摘要”, 在首页中加入对"摘要"栏的显示设置: 保存后,在首页中就是显示不出来: 在点击修改时可以看到"摘要"栏的信息: 找了一下午,也没…

网站静态化(转)

找了一些关于网站静态化的文章,分享一下。网友方案一:做程序也做了将近4年时间了,从来没有发过什么技术性的文章,今天发一个只在大家一起共同学习进步,如有错误地方请指正。 最近自己做了一个做网络广告的网站叫全方位…

杜绝Cookie传送提高网站访问速度

最近在做网站的优化,其中一项包括:对静态文件(如图片,JS脚本文件及CSS文件)启用一个新的独立域名,以杜绝不必要的Cookie传送,提高请求速度并减少带宽。   我们知道,当向HTTP服务器…

CentOS 上搭建 WordPress 网站

简介: WordPress是使用PHP语言开发的博客平台,在支持PHP和MySQL数据库的服务器上,您可以用WordPress架设自己的网站,也可以用作内容管理系统(CMS)。本文主要为大家介绍如何在CentOS系统的ECS实例上搭建Word…

长尾词推广系统推荐乐云seo_万词霸屏网络推广效果怎么样

信息传播一直伴随在我们的生活当中,而且信息传播在一些领域是非常重要的,尤其是在企业要提高知名度和一些新的产品要推广方面尤其重要。自从有了互联网之后信息传播速度也加快了、从此也就有了外推团队,企业中的外推团队最开始就是发发新闻稿…

linux shell监控网站延迟,使用shell脚本监控网站运行状态

前言:好久没有写博客了,上来把之前写的博客几乎全都清理掉了,想写的时候写上一些,蛮不错。shell监控网站/tomcat状态,依靠返回状态码来进行判断,返回200,302认为状态是正常的,否则认为tomcat/ng…

优化网站设计(三十二):使favicon.ico文件尽可能小并且可以缓存

前言 网站设计的优化是一个很大的话题,有一些通用的原则,也有针对不同开发平台的一些建议。这方面的研究一直没有停止过,我在不同的场合也分享过这样的话题。 作为通用的原则,雅虎的工程师团队曾经给出过35个最佳实践。这个列表请参考 Best Practices fo…

x教学html,css网站布局实录学习笔记第二部分XHTML与CSS基础

第二章 XHTML与CSS基础2.1 XHTML基础XHTML是网页代码的核心内容,标准XHTML代码如下:复制代码代码如下:ttp://www.w3">http://www.w3 .org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/1999/xhtml">新建文档对于这…

Jsoup开发网站客户端第二篇,图片轮播,ScrollView兼容ListView

最近一段日子忙的焦头烂额,代码重构,新项目编码,导致jsoup开发网站客户端也没时间继续下去,只能利用晚上时间去研究了。今天实现美食网首页图片轮播效果,网站效果图跟Android客户端实现如图: 从浏览器开发者…

.net网站报错:对象的当前状态使该操作无效

今天在页面上提交数据的时候出现这个异常: 原来是微软对asp.net表单域的默认长度限制为1000,而我要上传的数据已经超过一千条。 问题:现在asp.net request 表单域的默认长度是1000,如果是超过一千 就会出错,或者reques…

如何实现分享网站文章到微信朋友圈时显示指定缩略图或LOGO

当下朋友圈很火,很多企业都将微信朋友圈作为品牌传播的途径,经常会发一些精彩的文章到微信朋友圈供大家自发传播,这样的想法很好,对于优质的内容,网友们也乐于转发与朋友们分享,对品牌宣传与推广确实是有好…

公安网站备案流程

具体的公安网站备案流程如下: 1、注册账号。打开全国公安机关互联网站安全管理服务平台,如果已经有账号可以直接登录,没有的话就点击登录框下方的“没有账号?注册”进行注册(需要手机配合)。 2、添加开办主…

网站部署发布到互联网等整套流程

阅读对象:不会发布网站到互联网的人,不懂得域名和空间或者不会用的人,一直想装逼让别人看却没能得逞的人 如果你是上面几种人,那么这篇博客绝对适合你,废话少说进入正题。 1.网站发布 参考链接:http://www.cnblogs.com…

更改 Odoo 网站图标

更改 Odoo 网站图标 更改 Odoo 网站图标与更改网页中其它图片的方式不一样,原因是默认情况下,这个图标是从公司资料中的图标复制过来的,而不是从图库中选择的,所以要先把公司图标设置好,再让系统重新复制过来。 之前…

asp.net网站发布到服务器GET的技能

刚刚知道映射网络驱动器的作用(虽然才知道,但是我高兴) 把服务器上的硬盘或者其他电脑共享给你的盘映射到本地,就和操作本地硬盘一样。 双击计算机-》映射网络驱动器-》上面选择驱动器号 下面文件夹框里-》写上服务器的地址\\....…