YSlow--Web前端性能测试工具

2023-11-15

1. 介绍

YSlow是Yahoo发布的一款基于FireFox的插件,这个插件可以分析网站的页面,并告诉你为了提高网站性能,如何基于某些规则进行优化。它可以分析任何网站,并为每一个规则产生一个整体报告,如果页面可以进行优化,则YSlow会列出具体的修改意见。同类工具还有Google的插件PageSpeed

2. 安装

YSlow现在支持包括FireFox、Chrome、Safari等多种浏览器。下面仅以Chrome和FireFox为例介绍其离线安装方式。

安装包下载:https://download.csdn.net/download/aduocd/10816543

2.1 Chrome

1. 打开Chrome,输入:chrome://extensions/,进入扩展程序。并勾选上“开发者模式”

2. 将下载的插件拖入到Chrome中,弹出如下所示的对话框。

3. 点击“添加扩展程序”。安装完成后,弹出类似提示页面

2.2 FireFox

1. 点击FireFox-》菜单栏-》附加组件。

2. 选择 插件-》从文件安装附加组件。

3. 找到YSlow插件,然后安装。

4. 重启浏览器。

5. 安装成功以后,按F12,出现YSlow标签页。

注:一般YSlow在FireFox中是作为FireBug的插件使用,需要先安装FireBug,再安装YSlow。目前最新版本的YSlow不兼容官方最新的FireBug。另外一种方法是,使用书签版,但我司网络限制无法使用。所以当前暂时使用YSlow最好的浏览器是Chrome。

3. 使用

1. 打开Chrome浏览器后点击YSlow图标。出现如下界面:

2. 点击Run Test。YSlow会根据当前页面的性能生成一个评估报告。如下图所示。

这里有4个部分的体现出该页面的性能。

1)Grade。这里是该页面总的评分。A表示最高,B次之,以此类推。根据YSlow的规则(详见最后YSlow的23条规则)计算得来,通常A-B代表性能合格,C以下的为不合格。即,评分低于80分。

2)score。与Grade类似,这里也是评分,分数越高表示当前页面性能越好。

3) ALL(23)。表示YSlow的23条规则。下方为该23条规则的描述,以及该页面在这些规则上的评分。其中N/A表示不适用此项规则。

4) CONTENT/ COOKIE…。这里是指该页面考虑的评分项。也可以通过这些标签查看详情。例如,查看CONTENT。

3. 点击Components。可以查看该页面所有部件的信息列表。从中可以得知每个部件的各种详细信息。如:类型、URL、Expires数据、状态、大小、读取时间、ETag信息等等。通过对该列表的分析,可以知道到底是什么东西最消耗我们的资源,从而有针对性地进行优化。点击蓝色的部分可以进一步查看详情。

4. 点击Statistics。该视图是页面所有组件元素的统计信息。包括页面大小、css样式表大小、脚本文件大小、总体图片大小、flash文件大小和css中用到的图片文件大小。以及哪些部件被缓存,缓存了多少等。左侧的图标表示第一次加载时组件元素加载的数量和大小的详细信息。右侧图标表示页面已经加载了缓存之后加载组件元素的数量大小的详细信息。

4. YSlow的23条规则

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)避免跳转

        a. 同域:注意避免反斜杠 “/” 的跳转;

        b. 跨域:使用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并缓存。

5. YSlow得分产生的过程

这一过程分三个阶段:

1) YSlow抓取DOM以查找页面中的所有组件(图像、脚本、样式表等)。在抓取DOM之后,YSLow循环遍历Firebug的Net Panel组件,并将它们添加到DOM中已经找到的组件列表中;

2) YSlow获取有关每个组件的信息:大小,是否为gzip,Expires头信息等。(YSlow从Firebug的Net Panel获取此信息,如果不能获得。例如,组件是从缓存中读取的,或者它有304响应),YSLow会生成XMLHttpRequest以获取组件并跟踪其头信息和其他必要信息。

3) YSlow获取有关页面的所有这些数据,并为每个规则生成一个等级,从而产生总体成绩。

6. 参考资料

1. https://www.cnblogs.com/wajika/p/6278825.html

2. https://blog.csdn.net/ivan0609/article/details/45508365

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

YSlow--Web前端性能测试工具 的相关文章

  • 当指定为对象属性时,IIFE 如何影响其中的此关键字

    var a name Rhona check function return this name console log a check This returns 一个空字符串我希望它返回 Rhona 它没有给出 undefined 或 n
  • 如何在没有服务器或服务器端脚本的情况下创建动态访问数据库的内联网网站?

    问题是 必须在没有服务器托管的情况下创建 Intranet 网页 并且我一直在尝试使用 HTML 和 javascript 更新 Access 数据库 但这不适用于以下代码 请帮助 当以下代码从 Visual Studio 运行时 出现错误
  • Web 服务器内置 Azure 应用服务

    背景 我正在托管一个静态 Web 应用程序 由 NUXTJS 在 Azure 应用服务上生成 现在我想通过以下方式配置更多内容web config比如为多个域设置 CORS 设置 但我找不到任何文档来确定 Azure 应用程序服务中集成 安
  • Spring MVC Web 应用程序 - 从属性启用/禁用控制器

    我有一个在 Tomcat 中运行的 Web 应用程序 并使用 Spring MVC 来定义控制器和映射 我有以下课程 Controller api test public class TestController RequestMappin
  • Django 中的 Meta 到底是什么?

    我想简单地知道 Django 中的 Meta 类是什么以及它们的作用 from django db import models Class Author models Model first name models CharField ma
  • 如何通过 HTML 输入标签获取文件的引用? (角度2)

    我想在 Firebase 中上传图片 但要做到这一点 我必须先获取文件 例如 如何通过 HTML 获取我的计算机的图像 我正在尝试这样做 但我不知道这样做的回报是什么 帮帮我吧伙计们
  • Firebase 9(模块化 sdk web )替换 fieldPath

    我将以下代码与 Firebase SDK 8 一起使用 const db firebase firestore const collectionRef db collection collectionName var query colle
  • 从网站获取数据的vba代码

    我是这个网站和 VBA 编程的新手 我遇到了一个问题 我必须从中获取数据这一页 http www kieskeurig nl zoeken index html q 4960999543345 我需要有超链接网址Check Rates 10
  • 执行预检请求时是否需要 Access-Control-Allow-Origin CORS 标头?

    我们在我们的网站上看到了著名的 CORS 错误 XMLHttpRequest 无法加载https my site com api https my site com api 请求的资源上不存在 Access Control Allow Or
  • 最长和最短的 HTML 字符实体名称是什么? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 管子周围有
  • 使用 REST API 进行正确的会话管理

    我已经完成了 RESTful API 的设计 其中我使用作为参数发送的 API 令牌对每个请求进行身份验证 现在我想创建一个客户端界面 我想知道什么是管理每个客户端的会话的正确安全方法browser客户 我想过一个流程来保持服务器端无状态
  • 从 Unity WebGL 调用 Angular2 函数

    目前 我正在使用 Angular2 版本 2 1 2 和 Unity 可视化工具 使用 Unity 5 5 构建 我需要做的是从 Unity 到 Angular2 进行通信 我正在使用类似于下面的代码 public void GetBill
  • 使用内容安全策略防止 Internet Explorer 11 上的内联 JavaScript

    是否可以使用 ASP NET WebForm 上的 CSP 来阻止 Internet Explorer 11 上的内联 JavaScript 我知道 IE 11 不支持内容安全策略级别 2 但它支持级别 1 0 我尝试了很多方法 但没有明确
  • 使用节点http代理转发http代理

    我正在使用 node http proxy 库来创建转发代理服务器 我最终计划使用一些中间件来动态修改 html 代码 这就是我的代理服务器代码的样子 var httpProxy require http proxy httpProxy c
  • Jekyll 在子网站上生成静态网站?

    是否可以将 Jekyll 放在 GitHub 上托管的网站的单个部分上 即是否可以让 example github io 成为常规站点 而 example github io blog 由 Jekyll 静态生成 我相信可以通过创建另一个名
  • Phonegap - cordova 在 Android 和 iOS 设备上延迟且缓慢

    我刚刚开始使用 zend studio 开始我的第一个 PhoneGap 项目 但是 在我构建并部署它之后 该应用程序非常慢 Android 和 iOS 均可 滚动滞后 如果我按下按钮 转到下一页的速度很慢 有什么办法可以提高它的性能吗 提
  • 为什么使用HTTP协议时需要指定端口号?

    即使我们使用HTTP协议 为什么还需要用IP地址指定端口号 例如 http xyz 8080 这到底是什么意思 我们已经知道 在使用 HTTP 时 请求将在端口 80 上提供服务 那么为什么我们要显式指定端口呢 HTTP 的默认端口为 80
  • Firebase Auth - 最近登录多长时间

    我有一个个人资料选项卡 用户可以在其中按编辑并编辑他们的个人资料 我只想在必要时才需要他们的密码 所以想知道用户登录的时间是多少毫秒 这使得它不是最近登录 其中firebase会抛出错误 auth requires recent login
  • MVC4更新部分视图

    我正在开发一个简单的 MVC 应用程序 我有主视图 部分视图和控制器 这是我的主要视图 model partitalViewTest Models Qset div class transbox style height 1 Html Pa
  • 如何防止桌面浏览器(Chrome、Safari)缩放网页

    我尝试使用以下元视图端口标记来防止浏览器缩放 但这不起作用 我知道这是可能的 因为我的缩放在此网站上被阻止 未来主义 xyz http futurism xyz 该网站的视口标签是这样的

随机推荐

  • 爬取嘉兴市人才网即时招聘信息并写入文本TXT完整案例

    上一次讲到爬取嘉兴市人才网即时招聘栏目输出每一页的标题链接 点此查看 这次接着上一次的内容把完整的爬虫代码讲解完 再次声明 代码仅供技术学习交流 不作其他用途 思路 接着上一篇文章 接下来就是循环遍历列表中的每一个url 这个url指的就是
  • 爬虫入门第10课:实现代理池的API模块

    爬虫学习知识点及案例篇 汇总 爬虫入门第1课 代理池概述及开发环境 爬虫入门第2课 代理池的设计 爬虫入门第3课 实现代理池思路 爬虫入门第4课 定义代理IP的数据模型类 爬虫入门第5课 实现代理池工具模块 爬虫入门第6课 实现代理池的校验
  • AtCoder Beginner Contest 203 Pond(二分+二维前缀和)

    样例输入 样例1 3 2 1 7 0 5 8 11 10 4 2 样例2 3 3 1 2 3 4 5 6 7 8 9 样例输出 样例1 4 样例2 5 据说这个题用对顶堆维护被卡了 先挂一手官方该题题解链接 大体思路 二分 将原矩阵根据二分
  • 企业和软件工程师外包公司合作有哪些好处呢

    互联网技术的快速发展和普及也加速了企业信息化进程步伐 目前很多企业在加快信息化建设过程中遇到软件人才资源配置问题 正面临如下困境 临时及灵活的用人需求 招聘团队对专业软件开发人员招聘困难 内部软件人力不足 没有招聘编制 软件技术人员用工及管
  • 简单的 C/C++ 项目自动化构建--Xmake

    Xmake 简介 https xmake io XMake是一个基于Lua的轻量级跨平台自动构建工具 支持在各种主流平台上构建项目 Xmake Build backend Project Generator Package Manager
  • k8s-1.25高可用部署

    文章目录 k8s 1 25高可用部署 亲测可用 1 安装要求 2 准备环境 3 所有master节点部署keepalived 3 1 安装相关包和keepalived 3 2配置master节点 3 3 启动和检查 4 部署haproxy
  • kvm CPU绑定与查询

    cpu绑定 格式 virsh vcpupin domain name vcpu hostcpu config live 例如 virsh vcpupin 16 3 15 config live 说明 将kvm虚拟机第4个vcpu与宿主机第1
  • 计算机网络分层结构—OSI参考模型、TCPI参考模型、五层体系结构

    计算机网络分层结构 5层体系结构是在参考 OSI参考模型 与 TCP IP参考模型 得出的 一 OSI七层模型 OSI七层协议模型包括 应用层 Application 表示层 Presentation 会话层 Session 传输层 Tra
  • C++ Primer Plus P31 编程练习(编写一个C++程序,它使用3个用户定义的函数(包括main),并生产以下输出)——中职

    C Primer Plus P31 编程练习 第三题 编写一个C 程序 它使用3个用户定义的函数 包括main 并生产以下输出 Three blind mice Three blind mice See how they run See h
  • STM32---内部FLASH

    FLASH 1 FLASH介绍 主存储器 分为4个16KB扇区 1个64KB扇区和7个128KB扇区 boot0 boot1都接GND时从0x08000000开始运行代码 系统存储器 器件在系统存储器自举模式下从该存储器启动 主要存放芯片的
  • Python学习中阶:面向对象程序设计

    终于到了面向对象的编程这部分 看完了基本数据类型 函数以及文件的操作 终于开始 面 向 对 象 的 编 程 啦 本部分主要涉及四部分 面向对象的编程 异常处理 进程和线程 重点主要是面向对象的编程 进程和线程 此外 本部分内容是以 Pyth
  • php sybase存储过,SYBASE存储过程详解

    SYBASE存储过程 一 存储过程简介 二 存储过程的创建 修改 删除 三 存储过程中的参数 返回值和变量 四 存储过程中的流程控制语言 五 存储过程中的事务 游标 六 ASE存储过程和IQ存储过程的常见区别 附例子 1 存储过程简介 存储
  • TCP如何实现可靠传输

    TCP的特点 面向字节流 面向连接 可靠传输 可靠传输的实现 1 确认应答机制 对收到的信息给发送方发送报文确认收到数据 2 超时重传机制 等待200ms没有收到接收方的确认应答则说明数据丢失 那么就要进行重新发送 3 序号 确认号 告诉发
  • Flutter利用ScrollController获取、控制滚动组件的滚动位置

    Flutter 中的可滚动组件主要由三个角色组成 Scrollable Viewport 和 Sliver 我们如何利用ScrollController来获取滚动组件的滚动位置 1 先构建一个ScrollController ScrollC
  • Python未来的发展前景到底如何?

    对于程序员而言 了解编程语言的发展趋势 有助于个人职业成长 而对于想要入行IT的新人而言 最大的疑惑大多来自于不知道该选择哪门编程语言发展前景更好 有人让你学Java 因为使用的人最多 有人让你学Python 因为简单易学 是人工智能时代的
  • flutter 实现一个图片选择控件

    在最近的开发中 需要做一个选择图片 包括拍照和相册选择 然后上传的功能 我们的项目是iOS原生和flutter混编的 首先用flutter实现这个页面 选择了第三方插件image picker 下面先看一下效果图 下面我们开始一步一步实现这
  • Netty和Tomcat的区别、性能对比

    文章目录 一 Netty和Tomcat有什么区别 二 为什么Netty受欢迎 三 Netty为什么并发高 一 Netty和Tomcat有什么区别 Netty和Tomcat最大的区别就在于通信协议 Tomcat是基于Http协议的 他的实质是
  • 区块链入门学习笔记(二)

    1 什么是区块链 Blockchain 区块链是由节点参与的分布式数据库系统 区块链是由一串使用密码学方法产生的数据块组成的 每个区块都包含了上一个区块的哈希值 从创始区块开始连接到当前区 块 从而形成块链 链 指的是一个庞大而完整的数据库
  • 内窥镜去反光的论文整理

    文章目录 内窥镜去反光的论文整理 Detection and correction of specular reflections for automatic surgical tool segmentation in thoracosco
  • YSlow--Web前端性能测试工具

    1 介绍 YSlow是Yahoo发布的一款基于FireFox的插件 这个插件可以分析网站的页面 并告诉你为了提高网站性能 如何基于某些规则进行优化 它可以分析任何网站 并为每一个规则产生一个整体报告 如果页面可以进行优化 则YSlow会列出