如何优化网站加载时间

news/2024/5/14 23:05:29/文章来源:https://blog.csdn.net/weixin_33842304/article/details/94087267

一、背景

我们要监测网站的加载情况,可以使用 window.performance 来简单的检测。

window.performance 是W3C性能小组引入的新的API,目前IE9以上的浏览器都支持。一个performance对象的完整结构如下图所示:

memory字段代表JavaScript对内存的占用。

navigation字段统计的是一些网页导航相关的数据:

  1. redirectCount:重定向的数量(只读),但是这个接口有同源策略限制,即仅能检测同源的重定向;
  2. type 返回值应该是0,1,2 中的一个。分别对应三个枚举值:
    • 0 : TYPE_NAVIGATE (用户通过常规导航方式访问页面,比如点一个链接,或者一般的get方式)
    • 1 : TYPE_RELOAD (用户通过刷新,包括JS调用刷新接口等方式访问页面)
    • 2 : TYPE_BACK_FORWARD (用户通过后退按钮访问本页面)

最重要的是timing字段的统计数据,它包含了网络、解析等一系列的时间数据。

timing的整体结构如下图所示:

二、痛点

我们通过window.performance来检测加载情况,并不能非常直观的分析出影响网站加载速度的具体因素,因此,我们需要专业的工具来辅助我们完成。

三、在线监测工具

1、GTmetrix  https://gtmetrix.com/ (不需要FQ,需要人工自己分析)

2、PageSpeed Insights https://developers.google.com/speed/pagespeed/insights/(需要FQ,无需人工分析,会自动分析出优化相关内容)

  

四、GTmetrix 使用简介

以淘宝网分析为例

 得分情况

一般互联网的网站,得分要达到C(包含A和B)以上,最好能达到B

切换到 PageSpeed 选项卡

1. 可用的用户名2. 避免使用着陆页面重定向3. 指定缓存验证4. 优化图片5. 利用浏览器Cache,加过期时间6. 请求最小化7. 重定向最小化8. 指定图像尺寸9. 压缩js10. 延迟解析js11. 压缩html12. 启用GZIP压缩13. 尽早指定字符集14. 压缩css15. 从静态资源中删除查询字符串16. 如果压缩了,指定Accept-Encoding的头17. 避免不良请求18. 使用Keep-Alive19. 使用网上css20. ....

切换到 YSlow 选项卡

1. 减少HTTP请求次数
合并图片、CSS、JS,改进首次访问用户等待时间。
2. 使用CDN 就近缓存==>智能路由==>负载均衡==>WSA全站动态加速
3. 避免空的src和href 当link标签的href属性为空、script标签的src属性为空的时候,浏览器渲染的时候会把当前页面的URL作为它们的属性值,从而把页面的内容加载进来作为它们的值。
4. 为文件头指定Expires 使内容具有缓存性。避免了接下来的页面访问中不必要的HTTP请求。
5. 使用gzip压缩内容 压缩任何一个文本类型的响应,包括XML和JSON,都是值得的。旧文章
6. 把CSS放到顶部
7. 把JS放到底部 防止js加载对之后资源造成阻塞。
8. 避免使用CSS表达式
9. 将CSS和JS放到外部文件中 目的是缓存,但有时候为了减少请求,也会直接写到页面里,需根据PV和IP的比例权衡。
10. 权衡DNS查找次数 减少主机名可以节省响应时间。但同时,需要注意,减少主机会减少页面中并行下载的数量。 IE浏览器在同一时刻只能从同一域名下载两个文件。当在一个页面显示多张图片时,IE 用户的图片下载速度就会受到影响。所以新浪会搞N个二级域名来放图片。
11. 精简CSS和JS
12. 避免跳转 同域:注意避免反斜杠 “/” 的跳转; 跨域:使用Alias或者mod_rewirte建立CNAME(保存域名与域名之间关系的DNS记录)
13. 删除重复的JS和CSS 重复调用脚本,除了增加额外的HTTP请求外,多次运算也会浪费时间。在IE和Firefox中不管脚本是否可缓存,它们都存在重复运算JavaScript的问题。
14. 配置ETags 它用来判断浏览器缓存里的元素是否和原来服务器上的一致。比last-modified date更具有弹性,
例如某个文件在1秒内修改了10次,Etag可以综合Inode(文件的索引节点(inode)数),MTime(修改时间)和Size来精准的进行判断,
避开UNIX记录MTime只能精确到秒的问题。 服务器集群使用,可取后两个参数。使用ETags减少Web应用带宽和负载
15. 可缓存的AJAX “异步”并不意味着“即时”:Ajax并不能保证用户不会在等待异步的JavaScript和XML响应上花费时间。
16. 使用GET来完成AJAX请求 当使用XMLHttpRequest时,浏览器中的POST方法是一个“两步走”的过程:首先发送文件头,然后才发送数据。因此使用GET获取数据时更加有意义。
17. 减少DOM元素数量 是否存在一个是更贴切的标签可以使用?人生不仅仅是DIV+CSS
18. 避免404 有些站点把404错误响应页面改为“你是不是要找***”,这虽然改进了用户体验但是同样也会浪费服务器资源(如数据库等)。
最糟糕的情况是指向外部 JavaScript的链接出现问题并返回404代码。首先,这种加载会破坏并行加载;
其次浏览器会把试图在返回的404响应内容中找到可能有用的部分当作JavaScript代码来执行。
19. 减少Cookie的大小
20. 使用无cookie的域 比如图片 CSS 等,Yahoo! 的静态文件都在主域名以外,客户端请求静态文件的时候,减少了 Cookie 的反复传输对主域名的影响。
21. 不要使用滤镜 png24的在IE6半透明那种东西,别乱使,淡定的切成PNG8+jpg
22. 不要在HTML中缩放图片
23. 缩小favicon.ico并缓存

切换到 Waterfall 选项卡

 

首先,看下页面加载时间轴

1.URL重定向时间(Redirect duration)

包括:
Redirect from a non-www to www (eg. example.com to www.example.com)
Redirect to a secure URL (eg. http:// to https://)
Redirect to set cookies
Redirect to a mobile version of the site
说明:一个网站可能会执行多个重定向链,这个时间为总时间;如果没有重定向,则为0。
优化:即通过减少重定向

2.连接时间(Connection duration)

包括:即阻塞时间+DNS时间+连接时间+发送请求时间说明:即第一个200OK的发送时间优化:一般时间很短,无优化!

3.后端持续时间(Backend duration)

包括:后端处理数据的时间说明:后端响应时间优化:后端代码优化(重中之重)
推荐:Why is my page slow?

4.接收到第一个字节的时间(Time to First Byte (TTFB))

包括:顾名思义,前三个时间的加和说明:即从开始测试到页面接收到响应的时间优化:优化应用程序代码,实施缓存机制,微调Web服务器配置或升级服务器硬件。

 

5.DOM交互时间点(DOM interactive time)(不重要)

说明:与下面的DOM内容加载时间点非常接近,没有标记

6.DOM内容加载时间点(DOM content loaded time)

说明:如果没有阻止JS执行样式并且没有解析器阻止JS,它将于上面的DOM interactive time 相同许多JavaScript框架使用这个时间点作为开始执行他们的代码的起点。优化:由于这个时间经常被js用作起点,并且这个时间的延迟代表着延迟渲染,故确保样式、js的加载顺序和js延迟是非常重要的

推荐: style and script order is optimized  and that parsing of JavaScript is deferred.

7.第一次渲染时间点(First paint time)

说明:在这一时间点前,浏览器将只显示一个空白页面

8.第一个内容被渲染完时间点(First contentful paint time)

说明:当任何内容被渲染时,可以是文本,图像或画布渲染。目的是为了更好的体现用户的体验,因为它会在实际的内容被加载到页面上时进行标记,

而不仅仅是任何改变 - 但是通常可能与First Paint相同。所以这个指标是让你了解你的用户什么时候收到消费信息(文本,视觉等)

对于性能评估来说,比背景改变或者应用风格更有用。如果浏览器没有执行渲染(即HTML结果为空白页),则渲染时间可能会丢失。

9.加载完成时间点(Onload time)

说明:当页面处理完成并且页面上的所有资源(图像,CSS等)已经完成加载时。

此时,JavaScript window.onload事件触发,括号中的时间是执行由Onload事件触发的JavaScript的时间

 

五、 PageSpeed Insights 使用简介

以淘宝网分析为例

给出的优化建议

 

 

 

 

 

 

转载于:https://www.cnblogs.com/chenyablog/p/9712583.html

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

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

相关文章

鲜为人知的6个黑科技网站_6种鲜为人知的熊猫绘图工具

鲜为人知的6个黑科技网站Pandas is the go-to Python library for data analysis and manipulation. It provides numerous functions and methods that expedice the data analysis process.Pandas是用于数据分析和处理的Python库。 它提供了加速数据分析过程的众多功能和方法…

大型网站架构演变

今天我们来谈谈一个网站一般是如何一步步来构建起系统架构的,虽然我们希望网站一开始就能有一个很好的架构,但马克思告诉我们事物是在发展中不断前进的,网站架构也是随着业务的扩大、用户的需求不断完善的,下面是一个网站架构逐步…

网站系统分布式架构

写这篇文章之前,需要有些论点和论据,以表明网络系统在极端情况下的情况,先来看看世界上排名靠前的网站。 1、 FaceBook 2、 Google 从这两个站可以看出,当下比较极限的日均访问量在2~3亿,PV值…

新版 Android 已支持 FIDO2 标准,免密登录应用或网站

谷歌刚刚宣布了与 FIDO 联盟达成的最新合作,为 Android 用户带来了无需密码、即可登录网站或应用的便捷选项。 这项服务基于 FIDO2 标准实现,任何运行 Android 7.0 及后续版本的设备,都可以在升级最新版 Google Play 服务后,通过指…

【百度】大型网站的HTTPS实践(一)——HTTPS协议和原理

大型网站的HTTPS实践(一)——HTTPS协议和原理 原创 网络通信/物联网 作者:AIOps智能运维 时间:2018-11-09 15:07:39 349 0前言 百度于2015年上线了全站HTTPS的安全搜索,默认会将HTTP请求跳转成HTTPS。从今天开始&…

COOKIE伪造登录网站后台

1.关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)的知识,xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除…

phpstudy如何安装景安ssl证书 window下apache服务器网站https访问

1. 下载景安免费证书 https://www.zzidc.com/help/helpDetail?id555 2.文件解压上传至服务器,位置自己决定 3. 调整apache配置 景安原文链接:https://www.zzidc.com/help/helpDetail?id555 ① 确保你的apache编译了ssl模块,这是支持ssl证书…

【计算机网络】手动配置hosts文件解决使用GitHub和Coursera网站加载慢/卡的问题

目录0 前言1 打开hosts1.1 以管理员身份运行记事本1.2 打开hosts2 找到实际地址2.1 打开cmd2.2 找到网址3 替换地址3.1 修改hosts文件3.2 刷新4 后续内容的完善0 前言 本文是针对纯小白读者,没有涉及到任何的专业知识,你只需要按照步骤操作即可。 同时…

小白创建网站的曲折之路

小白创建网站的曲折之路 在虚拟机上创建网站 顾名思义,首先要有一个虚拟机。在网上百度一下后,我发现大家都在说使用一种叫做VMware Workstation的软件进行虚拟机的构建 在这位好心人的帮助下我找到了Vmware Workstation的下载资源,并成功下…

使用基本MVC2模式创建新闻网站

转载于:https://www.cnblogs.com/lr1402585172/p/10885084.html

html在线编辑器 asp.net,ASP.NET网站使用Kindeditor富文本编辑器配置步骤

1. 下载编辑器下载 KindEditor 最新版本,下载页面: http://www.kindsoft.net/down.php2. 部署编辑器解压 kindeditor-x.x.x.zip 文件,将editor文件夹复制到web目录下3、在网页中加入(ValidateRequest"false")4、引入脚本文件(XXX部分需要修改)…

大型网站服务器 pdf,大型网站服务器容量规划[PDF][145.25MB]

内容简介内 容 提 要本书讲解了用数学回归分析方法来做服务器容量规划的思路,让读者掌握服务器容量规划的量化方法;模型的选择是服务器容量规划的关键,不同的程序有不同的模型。本书使用nginxPHPMySQL为实例演示了具体的规划过程,…

怎么暂时关闭网站php,WordPress怎么临时关闭网站进行维护

有时可能会因为各种原因导致我们的网站出现访问错误,此时我们就需要临时关闭站点进行维护,那么我们该如何临时关闭站点进行维护呢?下面让我们来看一下如何临时关闭我们的站点吧。1、.maintenance法在WordPress根目录下新建一个名为.maintenan…

17joys网站后台功能设计-阶段1

开始没想把网站设计的很完善再开始写代码,主要也是想通过不断的编写小模块,最后再整合在一起,这样也好记录我每个时间段的经验心得,在设计17joys的网站后台功能时,看了很多CMS系统,最后还是决定参考我最喜欢…

拉拢中小网站 淘宝百度暗战升级...

拉拢中小网站 淘宝百度暗战升级... 重庆晚报 讯 近日,大量淘宝联盟站长反映其网站在百度搜索结果大幅缩水,疑遭集体封杀。百度的理由是“清扫垃圾页面”。迟迟未表态的淘宝近日对前者进行了公开回应。至此,淘宝跟百度之间为拉拢中小网站的暗战…

10款精选的用于构建良好易用性网站的jQuery插件

这篇随笔收集了10款非常给力的jquery 插件,帮助你构建易用性良好的网站,希望对你有用! Embedded help system 看过该插件demo后,感叹道,真是太棒了! 点demo里的How to下面的几个链接看看效果:) Embedded …

A4Desk 网站破解

A4Desk是一个不错的Flash站点建站工具,不过生成的swf文件很不爽,主要是1、单击3次就会显示注册对话框;2、会在网站上显示Demo 字样。 如果希望去掉这些信息,按如下步骤操作即可: 一、用A4Desk建立站点并导出。 二、用S…

IIS7 MVC网站生成、发布

(1)生成。 确保System.Web.Mvc.dll在bin目录下 (2)发布网站到文件系统 (3)在IIS中为网站添加应用程序池(一个虚拟目录,一个应用程序池) (4)添加在默认网站下添加虚拟目录 (5)转换为应用程序 至此,部署完毕 …

网站后台中对html标签的处理

最近做一个CMS&#xff0c;后台中需要使用在线编辑器对新闻进行编辑&#xff0c;然后发表。我用的在线编辑器是CKEditorCKFinder。也许是我为了让CKEditor更本地化吧&#xff0c;改了很多。后来发现在CKEditor中对文字设置字体、颜色、字号大小时文字的<span>标签会出现N…

设计电子商务网站的10个技巧(转自ITEye)

导读&#xff1a;随着先进科学技术的应用&#xff0c;人们无需外出逛几个小时来“猎”东西&#xff0c;直接坐在家里就可以购买所需商品&#xff0c;支付服务费用。你只需一台电脑就能搞定。人们习惯了周到的服务和漂亮的橱窗&#xff0c;对网店的选择也不例外。因此&#xff0…