简单聊聊网页的资源加载优化_html/css_WEB-ITnose
移动开发中很重要的一块是资源的加载优化。移动开发由于网速低带宽,高延迟,移动设备小内存,低处理器性能的原因,因此很多时候不得不通过优化前端页面的性能来满足用户对网页加载的预期。
前段时间做了相关方面的优化,发现网上的中文教程比较少,都是照着chrome开发者网站上一步一步看下来,找问题来解决,因此将部分有用的网页整理翻译了一下。
一、查看网页加载速度
网页加载时长受到网速影响,一般采用浏览器模拟一个特定网速进行测试,这样优化前与优化后的结果会有一个较准确的对比。
方法:打开调试面板—选择网速,一般我们移动测试用的是regular 3g.然后刷新页面,开始查看页面加载时间。
资源加载顺序与耗时就会依次显示出来,红线表示DOM加载的时间。
二、资源加载的顺序与说明
资源请求的生命周期如下:
重定向 - 应用程序缓存 - DNS - TCP - 请求 - 响应
对于某一个资源,点击资源加载进度条可以看到具体每一阶段的加载时间。或者可以在console面板中,通过timing api获取。
performance.getEntriesByType('resource').filter(item => item.name.includes("style.css"))
具体解释如下:
-
Queueing(排队):浏览器有连接限制,当网页资源很多时就会出现排队的现象,排队的资源要等到上一个资源加载完毕释放后才能开始请求。比关键资源(如javascript与css)低优先级的请求会被浏览器推迟,一般推迟的都是图片。在许多资源同时发起请求时浏览器默认先加载css,然后javascript,最后才是图片。
-
Stalled(阻塞):请求在发送前的时间被成为阻塞。阻塞的原因有很多种,导致排队的原因或是Proxy Negotiation都能造成阻塞。
-
DNS Lookup(DNS查询):DNS查找的时间,网页资源中请求每一个新域都需要做一次完整的DNS查询。
-
Initial Connection(初次连接):初次建立连接需要花费的时间。
-
Request Sent(请求发送时间):网络请求发送的时间。
-
Waiting(TFFB)(等待时间):等待服务器初始响应的时间。
-
Content Downloading(下载时间):资源下载的时间。
三、诊断原因与解决方案
通过chrome网络面板调试,经常会看到每次加载的时间都不太相同,造成加载慢会有许多原因。前端需要优化,但很多时候是后台或者网络的问题。
1. 排队问题
最长见的问题就是资源排队问题。在HTTP1.0/1.1连接中,chrome最多允许对同一host一次有6个连接,如果网页种有12个资源,那后面的6个就需要排队,直到前面的下载完毕,才能按次序发起请求。解决这个问题,首先要减少网页的请求,例如css sprite、js/css压缩、采用缓存、按需加载等等。
还有一种方法,将资源放在不同的子域名下,比如将图片资源与静态资源分开可以大大加速网页加载时间,但这个方法对HTTP2的连接不适用。
2. TFFB时间慢
TFFB时间通常建议在200ms以下,如果超过推荐值,会引起队列中其他资源下载都跟着变慢。TFFB高主要有两个原因:一是客户端和服务器之前网络情况比较差;二是服务器应用响应比较慢。首先排除网络因素,在本地环境看一下是否仍旧存在TFFB情况,如果有,需要优化应用程序的响应时间,例如优化数据库查询、实现资源缓、修改web服务器配置等等。如果是由于网络引起的,那服务器与客户端的每一个节点都有可能引起这个问题,最简单的方法是把应用迁移至其他服务器看看是不是存在这个问题,然后一个节点一个节点查明原因。
3. 下载时间过久
如果大量的时间花在下载上,那提高服务器响应也没用,还是应该将文件进行压缩。
最后
前端优化路漫漫,敌人是毫秒,却需要十八般武艺才能攻克。且行且思考吧。
参考资料: https://developers.google.com/web/tools/chrome-devtools/profile/network-performance/understanding-resource-timing#diagnosing-network-issues

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











HTML은 간단하고 배우기 쉽고 결과를 빠르게 볼 수 있기 때문에 초보자에게 적합합니다. 1) HTML의 학습 곡선은 매끄럽고 시작하기 쉽습니다. 2) 기본 태그를 마스터하여 웹 페이지를 만들기 시작하십시오. 3) 유연성이 높고 CSS 및 JavaScript와 함께 사용할 수 있습니다. 4) 풍부한 학습 리소스와 현대 도구는 학습 과정을 지원합니다.

HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

WebDevelopmentReliesonHtml, CSS 및 JavaScript : 1) HtmlStructuresContent, 2) CSSSTYLESIT, 및 3) JAVASCRIPTADDSINGINTERACTIVITY, BASISOFMODERNWEBEXPERIENCES를 형성합니다.

GiteEpages 정적 웹 사이트 배포 실패 : 404 오류 문제 해결 및 해결시 Gitee ...

anexampleStartingtaginhtmlis, whithbeginsaparagraph.startingtagsareessentialinhtmlastheyinitiate rements, definetheirtypes, andarecrucialforstructurituringwebpages 및 smanstlingthedom.

이미지를 클릭 한 후 주변 이미지를 산란 및 확대하는 효과를 얻으려면 많은 웹 디자인이 대화식 효과를 달성해야합니다. 특정 이미지를 클릭하여 주변을 만들 수 있습니다 ...

HTML, CSS 및 JavaScript는 웹 개발의 세 가지 기둥입니다. 1. HTML은 웹 페이지 구조를 정의하고 등과 같은 태그를 사용합니다. 2. CSS는 색상, 글꼴 크기 등과 같은 선택기 및 속성을 사용하여 웹 페이지 스타일을 제어합니다.

브라우저에서 JavaScript를 사용하여 닫기 탭과 전체 브라우저를 닫는 방법을 구별하는 방법은 무엇입니까? 브라우저를 매일 사용하는 동안 사용자는 ...
