使用HTML5监测网站性能

news/2024/5/16 13:23:19/文章来源:https://blog.csdn.net/weixin_34130269/article/details/85836273

在这个信息爆炸的互联网时代,越来越多的人缺少了等待的耐心,网站性能对于一个网站来说越来越重要。以下为监控到的网站打开时间对跳出率的影响:

  • 当网站打开时间在0-1秒时,跳出率为12%
  • 当网站打开时间在1-2秒时,跳出率为26%
  • 当网站打开时间在2-3秒时,跳出率为30%

从上面的数据很明显的可以看到网站的打开速度对用户体验或者网站信任度的影响会产生多大的影响。

一、如何监控网站的性能

1、工具类

这部分主要介绍的是网站性能的检测工具,工具类的监控主要优点是调试方便,缺点就是不能准确的或者用户的真实访问数据。具体的工具有:

  • Google Page Speed  https://developers.google.com/speed/pagespeed/
  • Google Speed Tracer  https://developers.google.com/web-toolkit/speedtracer/?hl=zh-CN
  • Yahoo Yslow http://yslow.org/
  • Fiddler http://fiddler2.com/ (软件介绍)
  • HttpWatch http://www.httpwatch.com/
  • HTTP  Analyzer http://www.ieinspector.com/

上面的工具有的免费,有点收费,但是总体的功能差不多。其中Google Speed Tracer使用起来可能会比较麻烦些,有机会在详细介绍这个工具的使用方法。

2、探测类

普通测试类的网站有:

  • 360网速测试 http://webscan.360.cn/tools/http
  • 17测 http://www.17ce.com/
  • 卡卡网 http://www.webkaka.com/
  • Webluker http://www.webluker.com/webtools/net

详细测试类的网站有:

阿里测 http://www.alibench.com/ (来自于阿里巴巴,抄袭对象为 http://www.webpagetest.org/)

3、监控类

  • 监控宝 http://www.jiankongbao.com/
  • 基调网络 http://www.networkbench.com/

4、服务器监控

  • Nagios http://www.nagios.org/
  • Cacti http://www.cacti.net/

二、监控系统的现状

目前第三方监控做的较好的主要为基调网络和监控宝,其中基调网络监控的数据更加详细完整,属于高富帅产品,而监控宝相对的更加平民化些,以下是针对这两个服务的分析。

优势

  1. 无需改动现有程序代码。第三方监控由于采用主动访问并采集的机制,只需要在用户管理界面配置相关页面的URL,就可以模拟用户访问的过程,因而完全不需要开发人员介入。
  2. 能采集到丰富的数据。因为模拟访问使用的浏览器由供应商部署,所以可以在客户端加入自定义插件或集成其他性能工具,能通过编程实现各类性能数据的采集。

劣势

  1. 成本比较大,以基调为例,如果要做到每天,每半小时监控一次的话,假设需要监控的终点页面为20个,全国要监控50个节点,每个节点3个线路,每个线路两台电脑的话,大概费用是每天1500元。而监控宝相对于基调网络监控的数据比较单一,成本相对要低些,每年要做到基本全面监控需要花4000元。
  2. 监控点有限,不能覆盖整体用户群。监控点可以增加,但总是无法覆盖所有的网络环境,比如用户开着迅雷下下载内容等,因此数据只能用于参考,并不能代表真实用户感受。
  3. 监控有时间间隔,都是按事先设定好的频率进行监控,在间隔中间点如发生问题,无法获知,且频率与费用成正比关系,频率越高费用越高。
  4.  对于强依赖流程进入的页面难以监控。例如预订流程,需要POST大量信息,且有时效性,对于监测点来说具有一定的挑战。

另外除了上述两种方法,前面的文章中说到了可以用GA来统计网站打开时间。具体原理为:

在页面的头部和底部分添加

  • var _nStartTime = new Date().getTime();
  • var _nEndTime = new Date().getTime();

两者的时间时间差即为页面的打开时间。但是此方法有很多的弊端,仅仅是统计了用户的部分耗时,其中不包括,连接时间、DNS解析时间、首包时间等。上述统计的时间,并不能真实的反应用户的打开时间。

三、性能监控需要关注哪些指标

以下为一些指标主要针对前台页面的加载。

  • 页面加载时间:从DNS解析开始到返回所有文件内容所用的时间
  • DNS解析时间:网站域名通过 DNS 服务器解析到IP地址的时间
  • 初始化连接时间:浏览器和WEB服务器建立TCP/IP连接的消耗时间
  • 首字节时间:从发起页面请求至服务器端返回第一个字节
  • 下载时间:从接收服务器发回的第一字节至主页面下载完成
  • 渲染时间:从页面跳转至页面Dom元素稳定。

四、HTML5提供了哪些信息

HTML5草案中提供了 window.preformance的API,可通过此API进行网站新能的监测。所有数据可使用javascript获取window.performance.timing中的如下属性获取:

window.performance

其中每个属性的具体含义为:

window.performance.timing

对象:window.performance.

成员:

  • .navigation (一个叫做performanceNavigation的对象.)
  • .timing (这玩意是一个被称作performanceTiming的包含了很多成员的对象)

方法:

  • .toJSON (返回一个对象,并抄写performance的可枚举成员到其中)

performanceNavigation(performance.navigation)对象的成员

performanceNavigation.type

返回值应该是0,1,2 中的一个.分别对应三个枚举值:

  • 0 : TYPE_NAVIGATE  (用户通过常规导航方式访问页面,比如点一个链接或者一般的get方式)
  • 1 : TYPE_RELOAD  (用户通过刷新,包括JS调用刷新接口等方式访问页面)
  • 2 : TYPE_BACK_FORWARD (用户通过后退按钮访问本页面)
  • 3 : TYPE_RESERVED (保留,其他非前三种方式访问)

performanceNavigation.redirectCount

一个只读属性,返回当前页面是几次重定向才过来的。但是这个接口有同源策略限制,即仅能检测同源的重定向。

performanceTiming(performance.timing)对象的成员:

  • .navigationStart 浏览器完成卸载前一个文档的时间(也就是准备加载新页面的那个起始时间)。如果没有前一个文档,那么就返回timing.fetchStart的值。似乎只有Chrome非常严格遵守了此草案,即不把刷新页面以及一个标签页输入地址到指定页面视为发生文档的卸载。
  • .unloadEventStart 如果前一个文档和当前文档同源,返回前一个文档发生unload事件前的时间。如果没有前一个文档或不同源则返回0。
  • .unloadEventEnd 如果前一个文档和当前文档同源,返回前一个文档发生unload事件的时间。如果没有前一个文档或不同源则返回0。如果,发生了HTTP重定向或者类似的事情。并且从导航开始中间的每次重定向,并不都和当前文档同域的话则返回0。
  • .redirectStart 如果发生了HTTP重定向或者类似的事情,并且从导航开始中间的每次重定向都和当前文档同域的话就返回开始重定向的timing.fetchStart的值。其他情况则返回0。
  • .redirectEnd 如果发生了HTTP重定向或者类似的事情,并且从导航开始中间的每次重定向都和当前文档同域的话就返回最后一次重定向,接收到最后一个字节数据后的那个时间。其他情况则返回0。
  • .fetchStart 如果一个新的资源(这里是指当前文档)获取被发起或类似的事情发生则fetchStart必须返回用户代理开始检查其相关缓存的那个时间,其他情况则返回开始获取该资源的时间。
  • .domainLookupStart 返回用户代理对当前文档所属域进行DNS查询开始的时间。如果此请求没有DNS查询过程,如长连接、资源cache、甚至是本地资源等那么就返回fetchStart的值。
  • .domainLookupEnd 返回用户代理对结束对当前文档所属域进行DNS查询的时间。如果此请求没有DNS查询过程,如长连接、资源cache、甚至是本地资源等. 那么就返回fetchStart的值。
  • .connectStart 返回用户代理向服务器服务器请求文档开始建立连接的那个时间,如果此连接是一个长连接又或者直接从缓存中获取资源(即没有与服务器建立连接)则返回domainLookupEnd的值。
  • .connectEnd 返回用户代理向服务器服务器请求文档建立连接成功后(注意,不是断开连接的时间)的那个时间。如果此连接是一个长连接又或直接从缓存中获取资源 (即没有与服务器建立连接),则返回domainLookupEnd的值。如果连接建立失败而用户代理进行重连则connectStart和connectEnd则应该是这次重连的相关的值。其中connectEnd必须包括建立连接的时间以及SSH握手协议和SOCKS认证等时间。
  • .secureConnectionStart 可选特性。用户代理如果没有对应的东东就要把这个设置为undefined,如果有这个东东并且是HTTPS协议那么就要返回开始SSL握手的那个时间。如果不是HTTPS那么就返回0。
  • .requestStart 返回从服务器、缓存、本地资源等开始请求文档的时间。如果请求中途连接断开了并且用户代理进行了重连并重新请求了资源,那么requestStart就必须为这个新请求所对应的时间。
  • .responseStart 返回用户代理从服务器、缓存、本地资源中接收到第一个字节数据的时间。
  • .responseEnd 返回用户代理接收到最后一个字符的时间,和当前连接被关闭的时间中更早的那个。同样文档可能来自服务器、缓存、或本地资源。
  • .domLoading 返回用户代理把其文档的“current document readiness”设置为“loading”的时候。(current document readiness 其实就是document.readyState API对应的状态。)
  • .domInteractive 返回用户代理把其文档的“current document readiness”设置为“interactive”的时候。从标准来说domReady的状态为“interactive”时意味着文档解析结束了,因为标准中描述DOM树创建结束后第一件事就是把“current document readiness”设置为“interactive”。
  • .domContentLoadedEventStart 返回文档发生DOMContentLoaded事件的时间。DOMContentLoad和DOMInteractive之间差了两个步骤,其中之一是所有open elements出栈,然后去看看待运行的script list中是否有需要运行的脚本,如果有则执行,一直到这个列表为空了再触发DOMContentLoad.。需要主的是这个待运行脚本列表。有些可能在不同浏览器中被加入进去的行为可能不同。比如 document.write写入文档流的脚本,以及script deferr 的脚本.. 所以我们应该知道deferr的脚本也是要他推迟domContentLoaded的,也就是我们最常用的所谓domReady。
  • .domContentLoadedEventEnd 文档的DOMContentLoaded事件的结束时间。所谓事件结束的时间是指如果DOMContentLoaded事件被开发者注册了回调事件,那么这个时间的End时间减去Start的时间就会是这个回调执行的大概事件。当然居于部分浏览器实现可能会有2-3ms的误差,但是这个时间基本可以忽略不计。类似的情况还有后面的.loadEventStart,End,即 window.onload 所有回调所消耗的时间。
  • .domComplete 返回用户代理把其文档的“current document readiness”设置为“complete”的时候。如果current document readiness的某个状态被多次触发那么对应的domLoading, domInteractive, domContentLoadedEventStart, domContentLoadedEventEnd and domComplete这些对应的API返回的时间就应该是这个状态第一次触发的时间。
  • .loadEventStart 文档触发load事件的时间。如果load事件没有触发那么该接口就返回0。
  • .loadEventEnd 文档触发load事件结束后的时间。如果load事件没有触发,那么该接口就返回0。

由于使用的是HTML5技术,所以目前支持的浏览器有限,具体详情可查看这里。

另外除了HTML5提供的接口以外,Chrome还提供了另外一套是有的方法:chrome.loadTimes()

chrome.loadtime

上面的数据也可用来做性能的监测。

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

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

相关文章

linux实战专家为你梳理网站集群安全基本框架思路!

技术的提升仅是量的积累,思想的提升才是质的飞跃!---老男孩

基于ECS部署LAMP环境搭建Drupal网站,云计算技术与应用报告

实验环境: 建站环境:Windows操作系统,基于ECS部署LAMP环境,阿里云资源, Web服务器:Apache,关联的数据库:MySQ PHP:Drupal 8 要求的PHP版本為7.0.33的版本 实验内容和要求…

这个算法网站,强推。

之前我几乎每天都在LeetCode 上刷算法题,但是在写公众号之后渐渐就没练了,现在我打算重拾起来。今天分享一下之前看到的一个算法网站吧,我觉得很不错。https://www.programiz.com/dsa/algorithmdsa 就是 Data Structures and Algorithms&…

几个简化算法理解的网站,进来收藏!

有小伙伴后台留言说,算法难懂、数据结构太抽象不好理解,作为一个过来人,我初学数据结构与算法直接是啃的大学教材,这样的学习方式不是适合所有人。尤其是编程基础比较差的同学,后来我找到了「捷径」学习方法&#xff0…

如何使用Jenkins持续集成C#网站项目

2019独角兽企业重金招聘Python工程师标准>>> 上两节分别讲了如何从vss迁移C#网站项目到gitlab和如何使用nuget管理C#网站项目,其实都是为了最后一节的内容做铺垫:持续集成C#网站项目,这里我们使用的持续集成工具是Jenkins 软件环境&#xff1…

git免费建站

记录HexoGithub免费搭建个人博客Jekyll 到 GitHub Pages 安装hexo npm uninstall -g hexo-cli rm /usr/local/bin/hexo rm -rf node_modules npm install npm install -g hexo-cli安装成功大概是这样的 安装失败把C:\Users\admin\AppData\Roaming\npm\node_modules 下hexo-cli文…

全球最大同性交友网站的所有用户密码都无法登录!!!

一、前言来了,老弟。我把你当正儿八经的朋友,没想到你,嘿嘿嘿。。。全球最大同性交友网站 github 要来搞事情了,事情是这样的:有一个多月没有提交代码了,今天提的时候怎么也提交不上去。意思是你原先的密码…

牛人博客!!!各大招聘网站信息实时查询浏览【转】

转自:http://www.cnblogs.com/zhaopei/p/4368417.html 阅读目录 效果图: 第一、分析url智联招聘:猎聘网:前程无忧:第二、用到了HtmlAgilityPack.DLL ...1.设置访问url页面的编码2.元素路径下的元素集合3、取标签的属性…

关于网站下拉导航的设置

网站的导航很多都是下拉的方式&#xff0c;如下图所示&#xff1a; 就是一种下拉菜单&#xff0c;导航的数据是以ul、li相互嵌套的方式存在的。 ------------------------------------------ <div class"head"><div class"logo"></div>&…

宝塔Linux/Windows面板如何添加网站?附图文教程

宝塔linux面板创建站点 常规方法 1、登录宝塔 Linux 面板 >> 网站 >> 添加站点&#xff0c;具体如下图所示&#xff1a; 2、填写站点域名&#xff1b;FTP 可以选择创建&#xff0c;然后就会得到 FTP 的账号和密码&#xff1b;数据库也可以选择创建&#xff0c;建…

Wordpress优化:网站用nginx前端缓存+Redis Cache缓存提速网站

本问转载&#xff1a;https://www.src1024.com/xy/seo/31780.html 新手站长搭建网站一般为了省钱没去选择大厂的云服务器&#xff0c;而小厂的服务器虽然便宜&#xff0c;但是访问速度也很感人&#xff0c;同时如果你用的是Wordpress建站程序&#xff0c;如果不做优化&#xf…

B2B2C网站系统建设的常见误区

随着网络的高速发展&#xff0c;极大的改变了人们的购物消费行为习惯&#xff0c;因此也带动电子商务的发展&#xff0c;很多传统企业想选择转型却对B2B2C网站系统缺乏一定的了解。那么接下来就为大家讲讲B2B2C网站系统的在建设过程中所遇到的常见误区。 1、B2B2C网站系统建设没…

html酒鬼酒网站制作,酒鬼酒

酒鬼酒建立相应的自救技术.随着科学技术的发展&#xff0c;对多种防护措施必将发挥更好的作用&#xff0c;更好的防护措施也不例外&#xff0c;本文通过对其中的几种防护措施进行研究和设计&#xff0c;提出适合渔民使用和经常处于温度&#xff0d;水位&#xff0d;泥质环境的传…

精心分享7个让你意想不到的网站,大开眼界!

精心给大家分享7个你意想不到的网站&#xff0c;每一个都让人惊喜&#xff0c;反正小智是爱上了&#xff0c;直接上干货&#xff01; 1、万有导航 万有导航是一个全能实用的导航网站&#xff0c;聚合了超多不同类型的站点。 比如影音娱乐、资源搜索、在线办公、设计必备、媒体…

这7个实用工具类网站,你用过几个?

作为一个工具狂&#xff0c;搜罗了超多好用的工具网站&#xff0c;今天给大家分享7个实用的工具类网站&#xff0c;可以解决大家很多问题&#xff0c;堪称效率提升利器。 1、UU在线工具 工欲善其事必先利其器&#xff0c;UU在线工具是一个工具聚合网站&#xff0c;里面聚合了文…

精心推荐10个高质量的网站,打开新世界的大门

这道题小互会&#xff0c;作为一个工具控&#xff0c;浏览器收藏夹藏着500多个网站&#xff0c;对网站有非常深入的研究。今天小智给大家分享10个高质量的网站&#xff0c;可以解决很多问题&#xff0c;直接上干货&#xff01; 1、Convertio Convertio是一个高质量的文件转换器…

强烈推荐8款高质量的网站,可以解决很多问题

推荐8个非常实用的网站&#xff0c;可以解决很多问题&#xff0c;每一个都是精心挑选的&#xff0c;喜欢的话记得点个赞哦~ 1、USEUM USEUM是一个免费的艺术品下载网站&#xff0c;网站聚合了六所著名的博物馆&#xff0c;放了共计21578幅艺术作品的高清扫描图像。有详细的作…

分享15款堪称神器却鲜为人知的软件和网站

分享15款堪称神器的软件和网站&#xff0c;可以解决很多问题&#xff01; 1、今日热榜 今日热榜是一个高质量的追热点工具&#xff0c;聚合了大量网站的热榜&#xff0c;包含综合类、科技类、娱乐类、社区类、购物类、财经类、大学类、日报类、地方门户类、影视类、阅读类、游…

大型网站技术架构设计

作为一名后端开发程序员&#xff0c;非常希望自己能够从 0 到 1 地参与到一个项目中&#xff0c;特别是像淘宝这个量级的项目。但是在职业生涯中&#xff0c;能够有幸参与到这样项目中的人寥寥无几。正好最近看到一篇文章&#xff0c;作者以淘宝作为例子&#xff0c;讲述服务端…

值得总结!认真安利7个让人眼前一亮的神仙软件和网站!

分享7款我常用的办公工具&#xff0c;可以解决很多需求&#xff0c;喜欢的话记得点赞支持哦~ 1、uTools uTools是一个极简、插件化、跨平台的桌面软件&#xff0c;你的生产力工具集&#xff0c;通过自由选配丰富的插件&#xff0c;打造你得心应手的工具集合&#xff0c;当你熟…