0

0

开发者应该了解的 web 性能_html/css_WEB-ITnose

php中文网

php中文网

发布时间:2016-06-21 09:01:17

|

1230人浏览过

|

来源于php中文网

原创

本文是翻译,版权归原作者所有

  • 原文地址(original source): https://medium.com/@christophelimpalair/developers-what-you-should-know-about-web-performance-550cef1040d8
  • 作者(author):scaleyourcode( @scaleyourcode )

网站的快和慢有什么区别呢?

存在一种正确答案吗?

没有,很不幸,还没有。原因在于网站具备很多因素,每种因素都有可能减慢网站。因此,本文不会给你提供一份需要完成的清单,而是打算解释清楚,某些因素是怎样减慢网站的,以及相应地你能做些什么。

正如谚语所说的:

授人以鱼,不如授之以渔;授人以鱼只救一时之及,授人以渔则可解一生之需。

立即学习前端免费学习笔记(深入)”;

除了让你给脚本增加 “async” 标签,或按照特定顺序布局页面之外,我还打算解释这些修改所带来的差异。这样,你就能折腾你的应用程序,并确认哪些修改是有用的。

顺便说一句,这些提示来自于我和 Ilya Grigorik 的 一次精彩交谈 。

介绍下 Ilya Grigorik,他是 W3C Web Performance Working Group 的联任主席 ,Google 的 web 性能工程师。嗯,他对性能颇有见地。

「每个人都应该做的一件事就是加速页面载入」

正如我刚才提过的,不存在这样的事情。web 有些出乎意料地复杂。使页面载入速度降低的现象,对你而言,或许不能成为专注的正确标准!(我们稍后再细谈)

然而,有些相当重要的因素,通常会带来显而易见的不同。你之前或许碰到过,但是或许不理解它们为什么重要。

1.压缩

用 gzip 压缩传输 HTML、CSS 和 JavaScript,减少了需要流经线缆的字节数。这可以显著减少下载资源的时间。浏览器渲染页面,离不开 HTML 和 CSS,因此我们想尽快下载这些资源。

2.优化图片

我有个朋友,他给客户搭建 WordPress 网站,有很多网站常常上传大量图片,我最近和他聊了一次。他遇到了一个问题,客户直接把相机里的图片上传到他们的网站。

手机拍摄的照片超过 1MB。就算你用CSS 调整大小,仍然需要通过线缆下载这副非常大的图片。网速慢的用户需要等待很长时间才能打开。

幸亏有应付的方法。 我有段节目 和优化图片相关。如果你还没有看过,我强烈推荐给你。

3.不要传输不必要的东东

查看不同页面里的脚本和 CSS 文件,自问一下,这些文件对于页面是不是真的需要。你很可能找到一些文件,它们被添加上去之后就再没去掉。

插件在这方面的表现,真的很糟糕。我接触的相当一部分 ebordPress 网站,载入了一大堆 CSS 文件,其中有一半文件在某些页面根本用不到!很多非 WordPress 网站也有类似现象。我早些时候检查 scaleyourcode.com 上的某些页面时,也发现它们正载入一个不必要的脚本。

清除脚本或样式表,会让人害怕。如果它对于那个页面真的是必需的、只是你不记得了,该怎么怎么办?有一些工具可以帮我们确认,推荐 DevTools(在 Audits 下)。

你能看出这些优化措施之间的共同点吗?它们都减少了我们需要传输的字节数。

渐进式渲染(Progressive rendering)

你需要尽早将 HTML 字节给到浏览器。

比如:一个请求进来了,(理想状态下)你的数据被缓存起来,因此服务器能够快速获取。然后,浏览器开始解析数据,并在屏幕上呈现出来。

我刚才提到了,页面载入时间可能不是你需要专注的性能标准,这得感谢 渐进式渲染 。

渐进式渲染( 来源 )

页面可以庞大,不过,只要你在短时间内(最好少于 1 秒)呈现给用户一些内容,他们仍然觉得载入很快。

Amazon 在这方面就做得不错:

Amazon 的渐进式渲染

对于此次 WebPageTest ,在 1.5 秒就得到了第一屏,但是你能看到,它没有包含所有内容。它包含的内容足以让你开始浏览页面、或查看假日交易。

宠物商店
宠物商店

目前,PetShop已经从最初的2.0、3.0等版本,发展到了最新的4.0版本。PetShop 4.0使用ASP.NET 2.0技术开发,其中加入了众多新增特性,因此,在性能、代码数量、可扩展性等方面有了重大改善。可以说,学习PetShop 4.0是深入掌握ASP.NET 2.0技术的捷径。本节将引领读者逐步了解PetShop 4.0的方方面面,包括应用程序安装、功能和用户界面简介、解决方案和体系

下载

然后,到 3.5 秒,另一部分载入了更多交易。到 6.5 秒,一些东西仍然在载入!事实上,整个页面载入的完成一直持续到 18 秒。你能等那么长时间吗?我表示怀疑!

如果 Amazon 专注于最慢的页面载入,那么一定有人被激怒。他们却专注于在最早的 packet 里发送最重要的字节。再进一步,他们可能在 第一个 packet 里塞满最重要的字节 。我敢打赌,他们还专注于尽快地为你发送那些字节。

这就是 TTFB (Time To First Byte) 注1 的由来。

当浏览器发起一个页面请求时,它就处于等待响应的状态。TTFB 代表了它需要多长时间才能收到第一个响应的字节。这个时间不但代表了你的服务器产生响应所需要的时间,而且意味着经过线缆传输所需要的时间。

这张图有着非常快速的 TTFB。如果你去网上逛逛,就能看到不同的 TTFB,你看到的情况类似于下图:

为什么会是这种情况,我们该如何最小化该时间呢?你应该专注对其优化了吗?不错的问题,我就此 准备了更多资料 。

如果你有兴趣了解更多信息,那么,请参考 Steve Souders 的 精彩演讲 ,谈到了用来测量的性能标准。页面载入时间不总是最好的标准。

能让内容更快呈现的其它因素?

既然我们有了更快的 TTFB,那么每个地方都会极速呈现吗?不一定,我们看看关键呈现路径。

关键呈现路径是浏览器为了得到 HTML、构建 DOM、得到样式信息、执行关键的 JavaScript 以及绘制内容、而不得不执行的步骤顺序。

天哪,要做的工作真不少呀。

这就是我们需要慎重对待它的原因。HTML、CSS 和 JavaScript 越多,需要的时间就越长。当载入 JavaScript 文件时,添加 async 标签,原因就在于此。

当浏览器遇到 JavaScript 时,它可能不知道这里的 JS 是否要改变 DOM。因此,它不得不假定它会改变,然后它阻止渲染,直到 JavaScript 完成了执行过程。如果增加了 async 标签,相当于向浏览器保证,该 JS 对于页面不是关键的,因此浏览器可以继续渲染,而不必等待 JS 执行完成。

如果碰到修改页面的脚本,那么是否意味着不应该异步呀?可能。尽管如此,即使你异步化了修改页面的脚本,那么从用户视角看,这种做法也是实用的。用户能够看到内容,并开始产生交互。的确,某些地方或许无法呈现,也可能需要多等一会儿。当然,这都取决于你的应用程序,因此尝试一下,看看是否满足你的需求。

关键路径对于尽可能快地接收字节如此重要,原因在于你能够越早地开始处理整个过程,就能越快地完成。关于优化关键渲染路径,请 参考这里 。

你该怎样测量异步(或其它优化方式)对应用程序的好与坏?

有个不错的测量工具, WebPageTest 。你能够得到各种有用信息,包括幻灯片视图。幻灯片视图就是我刚才用以展示 Amazon 页面的可视化过程。你可以用在你的网站上,并列比较有无异步的差异。

直到最近,DevTools 实现了自己的幻灯片视图。

打开 Chrome DevTools,点击 TimeLine -> 开启 Screenshots -> 重新载入页面。

你就能看到页面载入过程的截屏了。不错吧?

现在,你可以:

  1. 切换你的网络速度(记住,不是每个人都有超快的互联网)
  2. 查看幻灯片视图
  3. 把脚本改成异步(或做出其它调整)
  4. 对比幻灯片

你可以在 DevTools 里调整网速

另一个工具是 SpeedCurve ,这是我最近无意间发现的。它由两个聪明的家伙开发:Mark Zeman 和 Steve Souders,看起来很有帮助。

DevTools 非常优秀了,我们怎样才能更好地理解其用法呢?

难点在于增加了太多功能所不幸引起的副作用。

除了看上面的例子,我们开始学习并实践的更好方式是什么呢?对于怎样在实际网站中使用 DevTools, Paul Lewis 和 其他人 已经体验了。这里是关于修复滚动性能问题的 极好例子 。

更多

本文只是整个采访过程的简短摘要,我们在采访中深入了大量细节,涵盖了更多重要的主题(比如 HTTP/2 有什么不同,以及我们是否仍然需要最小化和串连)。

你可以在 这里 阅读全部摘要或收听采访。如果你需要,请参考下面的视频: https://youtu.be/Aayh2FAYGqc

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
全国统一发票查询平台入口合集
全国统一发票查询平台入口合集

本专题整合了全国统一发票查询入口地址合集,阅读专题下面的文章了解更多详细入口。

19

2026.02.03

短剧入口地址汇总
短剧入口地址汇总

本专题整合了短剧app推荐平台,阅读专题下面的文章了解更多详细入口。

27

2026.02.03

植物大战僵尸版本入口地址汇总
植物大战僵尸版本入口地址汇总

本专题整合了植物大战僵尸版本入口地址汇总,前往文章中寻找想要的答案。

15

2026.02.03

c语言中/相关合集
c语言中/相关合集

本专题整合了c语言中/的用法、含义解释。阅读专题下面的文章了解更多详细内容。

3

2026.02.03

漫蛙漫画网页版入口与正版在线阅读 漫蛙MANWA官网访问专题
漫蛙漫画网页版入口与正版在线阅读 漫蛙MANWA官网访问专题

本专题围绕漫蛙漫画(Manwa / Manwa2)官网网页版入口进行整理,涵盖漫蛙漫画官方主页访问方式、网页版在线阅读入口、台版正版漫画浏览说明及基础使用指引,帮助用户快速进入漫蛙漫画官网,稳定在线阅读正版漫画内容,避免误入非官方页面。

13

2026.02.03

Yandex官网入口与俄罗斯搜索引擎访问指南 Yandex中文登录与网页版入口
Yandex官网入口与俄罗斯搜索引擎访问指南 Yandex中文登录与网页版入口

本专题汇总了俄罗斯知名搜索引擎 Yandex 的官网入口、免登录访问地址、中文登录方法与网页版使用指南,帮助用户稳定访问 Yandex 官网,并提供一站式入口汇总。无论是登录入口还是在线搜索,用户都能快速获取最新稳定的访问链接与使用指南。

114

2026.02.03

Java 设计模式与重构实践
Java 设计模式与重构实践

本专题专注讲解 Java 中常用的设计模式,包括单例模式、工厂模式、观察者模式、策略模式等,并结合代码重构实践,帮助学习者掌握 如何运用设计模式优化代码结构,提高代码的可读性、可维护性和扩展性。通过具体示例,展示设计模式如何解决实际开发中的复杂问题。

3

2026.02.03

C# 并发与异步编程
C# 并发与异步编程

本专题系统讲解 C# 异步编程与并发控制,重点介绍 async 和 await 关键字、Task 类、线程池管理、并发数据结构、死锁与线程安全问题。通过多个实战项目,帮助学习者掌握 如何在 C# 中编写高效的异步代码,提升应用的并发性能与响应速度。

2

2026.02.03

Python 强化学习与深度Q网络(DQN)
Python 强化学习与深度Q网络(DQN)

本专题深入讲解 Python 在强化学习(Reinforcement Learning)中的应用,重点介绍 深度Q网络(DQN) 及其实现方法,涵盖 Q-learning 算法、深度学习与神经网络的结合、环境模拟与奖励机制设计、探索与利用的平衡等。通过构建一个简单的游戏AI,帮助学习者掌握 如何使用 Python 训练智能体在动态环境中作出决策。

3

2026.02.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号