电脑端京东的我的订单html+css页面_移动端网页性能优化自查表

一、网络加载

DNS预加载

通过dns-prefetch属性可以让浏览器提前解析资源或接口对应的服务器IP地址,避免在请求中发起DNS解析请求,节省请求时间

资源预加载

利用preload,prefetch,preconnect属性我们可以在

内部声明式的书写资源获取请求,提前加载非首屏但又较重要的资源,避免在满足首屏优先加载的情况下,反而忽略了其他次重要资源的加载

使用CDN资源,并且注意http缓存头的设定

HTTP缓存包括强缓存(Cache-Control,Expire)和协议缓存(Last-modified, Etag)两种。其中,协议缓存资源每次都会向服务端发送请求来判断资源是否过期,未过期则返回304,在网络极其卡顿的情况下,这个304请求有可能堵塞整个页面的资源加载

对JS资源按照模块和首屏需求进行优先加载,不需要的模块按需加载

移动端的网络资源有限,为了尽快让用户看到有意义的首屏,我们需要尽可能的保持首屏需要加载的资源越小越好

内联首屏关键CSS

将首屏关键样式内联至页面中,保证最快速度看到带有基本样式的首屏,避免用户端出现较长时间的白屏时间

内联关键JS代码

内联关键代码也是为了让用户第一时间感受到页面已经加载成功,但是内联代码不能将所有代码都内联至HTML中,因为这些代码每次都会伴随HTML下载下来,加大HTML文件的体积,也无法让代码在不同的网页间提供复用的功能

检查服务端下发的资源是否使用GZIP压缩

GZIP对于文本资源(JS,CSS文件)有较高的压缩效率,通常可以减少70%的体积

避免资源的重定向

增大加载时间,用户体验较差

异步延迟加载第三方非关键代码

移动端网络资源有限,为了让这些不重要的代码不影响首屏渲染,可以延迟一小段时间再加载

合理的使用本地缓存,避免把不必要的数据全部放到COOKIE当中

每一次AJAX请求都会将当前域名中的所有COOKIE值传递给服务端

使用service worker,增加页面的离线体验和页面的加载体验

页面发送请求时,会先经过SW的脚本,这样可以让我们通过编程的方式来制定我们需要缓存的文件,同时,缓存在service worker中的文件,可以让用户离线访问

在条件允许的情况下,可以使用HTTP2.0协议

HTTP2.0协议可以提升网络链路的复用性,提升资源加载效率

二、HTML

注重标签的语义化,保持用最简洁的标签完成所需的功能

标签的语义化提高代码的可维护性,在页面加载CSS失败时也不至于很难看。同时,需要保持标签最小化,无意义的标签可以利用伪类表示

CSS放到head中,JS到body尾部,JS,CSS都需要放在head中时,JS放在前面

  1. CSS会阻塞页面的渲染,不阻塞DOM的解析;
  2. JS会阻塞DOM的解析,但是,浏览器会预先下载资源;
  3. 浏览器在遇到script标签时会触发页面渲染,如果这时CSS尚未加载完成,页面将会等待CSS加载完成后在执行

HTML代码压缩,去除注释、空白符

减少网络传输的文件大小

尽量避免使用iframe

iframe 内资源的下载进程会阻塞父页面静态资源的下载与 CSS 及 HTML DOM 的解析

三、CSS

压缩CSS代码,排除重复的CSS样式

减少网络传输的文件大小

根据组件打包CSS文件

按需加载,减少网络传输的文件大小

避免使用CSS的@import语法

可能阻塞页面的加载

使用Sass、Stylus、Less等预编译语言时,编码CSS嵌套不超过3层

提高解析css的效率

使用autoprefixer给CSS代码自动增加前缀

自动帮助我们添加浏览器头,避免意想不到的浏览器兼容性问题

尽量少使用css通配符,特别是多层嵌套的末尾使用通配符

CSS的解析过程是从右往左逆向匹配,使用CSS通配符会增加解析的计算量

不要滥用高消耗的样式

box-shadow、border-radius、filter这些属性绘制前都需要浏览器进行大量的计算

四、动画

简单动画尽量只使用transform、opacity、transition等属性完成

width、height、top、left、right、bottom、margin等属性的变更都会触发页面的重排,在移动端环境中频繁的重排会导致动画卡顿

较复杂动画可以使用css帧动画

在移动端兼容性好、性能好、更具有可操控性

js动画不要使用setTimeout、setInterval,使用requestAnimationFrame

setTimeout和setInterval在动画执行存在性能问题,且无法准确的控制帧数

对将要使用动画的部分,开启GPU硬件加速(注意不要滥用)

对开启GPU硬件加速的标签,浏览器将把它提升到一个单独的图层,并通过GPU进行预处理

使用will-change属性(注意不要滥用)

will-change的作用告诉浏览器哪些属性将要变化,让他可以提前做好准备

五、JavaScript

JS代码压缩,代码分模块加载

减少代码大小,根据页面需求按需加载资源,最下化用户需要加载的资源大小加快页面展示的速度

处理长列表或者大量DOM元素时,不要绑定太多的事件监听函数

节省内存和减少监听事件的注册

利用throttle和debounce函数去处理频发触发,但是不需要频发执行的函数,例如scroll,touchmove

避免频繁的无效的操作,避免页面的卡顿

利用setTimeout代替setInterval

setInterval可能存在指令堆积的问题,导致页面卡顿

尽量避免大批量的重排重绘

页面的重排重绘很耗性能,尤其是重排

六、图片

使用工具压缩图片

移动端网络条件有限,图片越大加载时间越长,合理使用工具压缩图片,可以兼顾图片质量和图片大小

使用较高压缩比格式的文件webp

减少文件传输的大小,避免出现图片尺寸使用不当的问题,小icon用大图

使用雪碧图

减少http请求数,不过当我们的http协议升级至1.1,2.0之后,雪碧图减少http请求数的效果并不明显

图片懒加载

避免用户提前加载过多无用的资源,浪费用户流量

根据不同的屏幕像素比加载不同尺寸的图片

在较大像素比的屏幕下加载小尺寸的图片,图片会模糊;在较小像素比的屏幕下加载大尺寸的图片,会浪费用户流量和cdn流量

小于2KB的图片可以尝试使用base64格式去替换

将图片转换成base64格式可以减少http请求数量,但是,不能对较大尺寸的图片使用base64格式,因为base64算法会提升三分之一的文件大小

七、字体

压缩字库大小,避免加载过多无用的资源,推荐工具字蛛

我们只需要页面需要的字体文件即可,不需要浪费流量加载用户不需要的资源

优化字体的展示策略

使用font-display属性可以避免在字体加载过程中,不显示文字的问题

当特殊文字量较少且内容固定时,可以尝试使用图片代替

快速完美的还原界面

八、其他

对于整个页面资源需求量较大时,可以使用骨架屏或者增加loading效果

加强用户体验,加速首屏体验,通过有意义的ui让用户提前得到反馈

lighthouse性能跑分

Google推出的网页性能跑分工具,可以较全面的了解网站的性能

通过Chrome的控制面板code coverage部分,找到未使用代码的比例

帮助我们快速找到首屏未使用的代码

通过构建工具中使用Scope Hoisting

这里以webpack举例,使用Scope Hoisting后打包的文件,文件体积更小,代码运行时创建的函数作用域更少,提升JS的启动速度

参考

  • web-performance-made-easy
  • rail模型讲解
  • Yahoo性能优化
  • Google PageSpeed Insights规则
  • Google IO web性能优化笔记
  • 14 Rules for Faster-Loading Web Sites
  • 2018前端性能优化清单
  • 2017前端性能优化清单
  • 美团感官性能优化
  • 前端性能优化相关
  • PWA简介
  • css性能优化

关于我

我是一个莫得感情的代码搬运工,每周会更新1至2篇前端相关的文章,有兴趣的老铁可以扫描下面的二维码关注或者直接微信搜索前端补习班关注。

82bb8b0819a6fe056bff874c87bb72f7.png

精通前端很难,让我们来一起补补课吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我会尽力帮你。 HTML (Hypertext Markup Language) 是用来描述网页的一种语言。HTML 不是一种编程语言,而是一种标记语言 (markup language)。标记语言是一套标记标签 (markup tag),用来描述文档中的内容。 CSS (Cascading Style Sheets) 是一种样式语言,用来描述 HTML 或 XML (包括如 SVG、HTML 之类的 XML 文档) 文档的呈现方式。 JavaScript 是一种轻量级的编程语言。它是设计用来给 HTML 网页增加交互性的。 要写一个移动端登录页面,你可以使用 HTMLCSS 和 JavaScript 来创建一个响应式的登录单,并让它适应不同大小的屏幕。 以下是一个简单的登录页面的示例: HTML 代码: ``` <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>登录页面</title> </head> <body> <form id="login-form"> <label for="username">用户名:</label><br> <input type="text" id="username" name="username"><br> <label for="password">密码:</label><br> <input type="password" id="password" name="password"><br><br> <input type="submit" value="登录"> </form> </body> </html> ``` CSS 代码: ``` #login-form { width: 300px; margin: 0 auto; text-align: center; } #login-form label { display: block; margin-bottom: 8px; font-size: 18px; } #login-form input[type="text"], #login-form input[type="password"] { width: 80%; height: 32px; padding: 8px; border: 1px solid #ccc; ### 回答2: 要用HTMLCSS和JS编写一个移动端登录页面,首先,我们需要创建一个HTML文件,然后在文件中添加必要的HTML结构和内容。 在HTML文件中,我们可以使用<meta>元素设置视口尺寸,以确保页面适应移动设备的屏幕。然后,我们可以创建一个单元素,用于用户输入用户名和密码。这可以通过<input>元素实现,设置不同的类型和属性来指定用户名和密码输入框。我们还可以添加一个提交按钮,供用户点击以提交登录单。 接下来,我们可以使用CSS来为登录页面添加样式。我们可以使用选择器来选择特定的元素,然后使用CSS属性来定义它们的样式。例如,我们可以设置单的边框、背景颜色和字体样式等。我们还可以使用媒体查询来调整页面布局和样式,以适应不同大小的移动设备。 最后,我们可以使用JavaScript来为登录页面添加交互功能。例如,我们可以使用JavaScript来验证用户输入的用户名和密码是否符合要求,或者在用户点击提交按钮时执行某些操作。我们可以使用事件监听器来侦听按钮点击事件,并在事件发生时触发相应的功能。 通过结合HTMLCSS和JS,我们可以创建一个移动端登录页面,并为其添加样式和交互功能,使其适应不同的移动设备。这样用户就可以在移动设备上方便地登录并使用网站或应用程序。 ### 回答3: 移动端登录页面可以使用HTMLCSS和JavaScript来实现。 首先,在HTML中创建一个登录页面的结构,可以使用`<form>`标签来包裹登录单,包含用户名和密码的输入框以及提交按钮。可以使用`<input type="text">`来创建文本输入框和`<input type="password">`来创建密码输入框。 接下来,使用CSS样式给登录页面添加样式,使其适应移动设备。可以使用媒体查询来设置页面在不同屏幕尺寸下的样式。可以设置背景颜色、字体样式、边框等等,以及通过`@media`查询来调整页面布局。 然后,使用JavaScript来处理单提交的事件。当用户点击提交按钮时,可以使用`addEventListener`方法监听提交事件,在事件处理函数中获取输入框中的用户名和密码,并进行验证。可以使用正则达式或者其他方法来验证输入的合法性。如果验证通过,则可以跳转至用户的登录页面,或者显示登录成功的提示信息。 此外,可以使用JavaScript根据设备的屏幕尺寸动态调整页面布局和样式,以实现响应式设计。可以使用`window.onload`函数或者其他方法来检测屏幕尺寸,并进行相应的调整。 最后,可以在HTML中引入所需的CSS和JavaScript文件,以便页面正确显示和交互。 总的来说,使用HTMLCSS和JavaScript可以很方便地创建一个移动端登录页面。需要注意页面布局和样式的适应性以及输入验证的安全性。感谢您的提问,希望这个回答对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值