web性能优化指南

news/2024/7/5 23:27:24 标签: javascript, 前端, ui

1、精简你的资源

构建高性能应用程序的有效方法是审核发送给用户的资源。虽然Chrome开发人员工具中的网络面板可以很好地总结给定页面上使用的所有资源,但如果您到目前为止尚未考虑性能,那么知道从哪里开始是很重要的。以下是一些建议:

  • 如果您使用Bootstrap或Foundation来构建UI,请问自己是否有必要。这些资源添加了浏览器必须下载,解析和应用于页面的大量CSS,所有这些都是在特定于站点的CSS进入图片之前。 Flexbox和Grid在使用相对较少的代码创建简单和复杂布局方面非常出色。由于CSS是一种渲染阻塞资源,因此CSS框架的开销可能会显着延迟渲染。您应该通过消除不必要的开销来加速渲染,尽可能依赖于浏览器中的工具。
  • JavaScript库很方便,但并不总是必要的。以jQuery为例:由于querySelector 和 querySelectorAll等方法,元素选择得到了极大的简化。使用addEventListener可以轻松进行事件绑定。 addEventListener. classList, setAttribute, 和getAttribute提供了使用类和元素属性的简便方法。如果你必须使用图书馆,研究更精简的替代品。例如,Zepto是一个较小的jQuery替代品,Preact是React的一个小得多的替代品。
  • 并非所有网站都需要是单页面应用程序(SPA),因为它们经常广泛使用JavaScript。 JavaScript是我们在字节的web字节上提供的最昂贵的资源,因为它不仅必须下载,还必须解析,编译和执行。例如,具有优化前端架构的新闻和博客站点可以像传统的多页体验一样表现良好。特别是如果正确配置了HTTP缓存,并且可选地,如果使用了service worker。

2、如何发送资源

当您知道需要为您的应用发送哪些资源以使其成为您想要的美观和功能时,请考虑下一步如何发送它们。如何发送资源对于构建快速用户体验至关重要。

  • 迁移到HTTP / 2。 HTTP / 2解决了HTTP / 1.1中固有的许多性能问题,例如并发请求限制和缺少头压缩。
  • 使用资源提示加快资源交付。 rel = preload是一个这样的资源提示,它允许在浏览器发现它们之前提前获取关键资源。这可以对页面呈现产生明显的积极影响,并在明智地使用时降低交互时间。 rel = preconnect是另一个资源提示,可以掩盖为第三方域上托管的资源打开新连接的延迟。

3、优化数据大小

有了一些关于哪些资源适合发送的想法以及_how_你应该发送它们,我们将介绍一些限制你发送的_how much_数据的建议:

  • 缩小文本资源。缩小是在基于文本的资源中删除不必要的空格,注释和其他内容。它可以显着减少您发送给用户的数据量,而不会影响功能。在JavaScript中使用uglification以通过缩短变量和方法名称来进一步节省成本。由于SVG是基于文本的图像格式,因此可以使用SVGO进行优化。
  • 配置服务器以压缩资源。压缩资源会大大减少您发送给用户的数据量,尤其是在涉及文本资产的情况下。 GZIP在这个领域是一种令人尊敬的格式,但Brotli.压缩可以更进一步。但是,要理解压缩并不是性能问题的全部:一些隐式压缩的文件格式(例如,JPEG,PNG,GIF,WOFF等)不响应压缩,因为它们已经被压缩。
  • 优化图像 以确保您的网站尽可能少地发送图像数据。由于图像构成消耗了大部分的性能,因此图像优化代表了提升性能的独特机会。
  • 如果您有时间,请考虑提供其他图像格式。 WebP享有相当广泛的浏览器支持,并且可以在保持类似视觉质量的同时削弱文件大小的既定格式。 JPEG XR是IE和Edge支持的另一种替代格式,可提供类似的节省。
  • 响应地传送图像。各种各样的设备及其屏幕提供了一个巨大的机会,通过发送最适合查看它们的屏幕的图像来提高性能。在最简单的用例中,您可以向元素添加srcset属性 ,以指定浏览器可以选择的图像数组。在更复杂的方面,您可以使用帮助浏览器选择最佳格式(例如,WebP over JPEG或PNG),或者为不同的屏幕尺寸提供不同的图像处理。
  • 使用视频而不是动画GIF。动画GIF非常庞大,但质量相近的视频要小得多,通常大约80%左右。如果您的网站大量使用动画GIF,这可能是您可以做的最有效的事情,以提高加载性能。
  • 客户端提示 可用于根据当前网络条件和设备特征定制资源交付。 DPR,Width和Viewport-Width标头可以帮助您使用服务器端代码为设备提供最佳图像,并提供更少的标记。 Save-Data标头可以帮助您为明确要求您的用户提供更轻松的应用程序体验。
  • NetworkInformation API公开有关用户网络连接的信息。此信息可用于修改较慢网络上的用户的应用程序体验。

http://www.niftyadmin.cn/n/1383219.html

相关文章

My Interface

一、创建Myinterface接口 public interface Myinterface {static final String MyifName"我的接口";static final String MyifPrice"价格";public double getprice(); } 二、创建引用接口的类 public class UseMyinterface {public static void main(Strin…

157 TP5报错Fatal error: require(): Failed opening required '/home/www/xx/public/../thinkphp/start.php

https://jingyan.baidu.com/article/afd8f4deb784fe34e386e97b.html https://www.cnblogs.com/300js/p/9224567.html 搜一下百度经验就行了!

vIDC v2.0 强大的端口转发神器使用总结-开放内网tfs代码服务

vIDC2.0 端口映射工具,最近在公司闲来无事,想自己整个tfs来管理自己的研究代码. 本来是想用微软Visual Studio提供的免费tfs,但是无奈速度太慢.他们的服务器在美国,中国也没有代理.签入签出一个东西要老命了 .那怎么办呢. 后来想想自己家里有台牛B的机器,我为什么不自己搭一个呢…

Android设计模式(七)--原型模式

1、定义: 用原型实例指定创建对象种类,并通过拷贝这些原型创建新的对象。2、目的: 从一个对象创建另外一个可定制的对象,而不须要知道不论什么创建细节。 3、作用: 3.1、简化对象的创建。 3.2 、对于处理大对象。性能上…

Java编程——服务器设计方案之应用限流

前言 在一个高并发系统中对流量的把控是非常重要的,当巨大的流量直接请求到我们的服务器上没多久就可能造成接口不可用,不处理的话甚至会造成整个应用不可用。 比如最近就有个这样的需求,我作为客户端要向kafka生产数据,而kafka的…

apache虚拟主机配置

常用的配置&#xff1a; <VirtualHost *:80> ServerAdmin romyredidai.com DocumentRoot "D:/var/www/user_admin/" ServerName user_admin.redidai.com ErrorLog "logs/romy-redidai.com-error.log" CustomLog "logs/romy-redidai.com-access.…

利用 DBHelper实现登录功能

一&#xff0e; 用DBHelper 与mysql 连接 实现最简单的登录验证。 &#xff08;1&#xff09;连接好mysql数据库&#xff0c;如果无法连接&#xff0c;先打开mysql服务。新建一个数据库&#xff0c;名字为text&#xff0c;再新建一个数据表&#xff0c;名字为user&#xff0c;…

Session与Cookie底层原理

2019独角兽企业重金招聘Python工程师标准>>> 学习目录 1.会话入门 2.cookie 3.session 4.自定义缓存 5.自定义Token &#xff16;.表单重复提交&#xff08;Http重复提交&#xff09; 一、会话管理入门 1.2、软件中的会话 打开浏览器 -> 浏览商品列表 -> 加…