網路æ§è½
Web æ§è½æ¯è² è¼æéåéè¡æç客è§åº¦éåç¨æ¶é«é©ãWeb æ§è½æ¯æç«é»å è¼ã交äºååææéçæéï¼ä»¥åç¨æ¶äº¤äºéç¨ä¸å §å®¹çæµæ¢ç¨åº¦ââæ»¾åæ¯å¦æµæ¢?æéå¯é»æå?å½åºçªå£å è¼å顯示çé度æ¯å¦å¾å¿«?å®åçåç«æ¯å¦æµæ¢?Web æ§è½å æ¬å è¼æéãæ¯ç§å¹æ¸åäº¤äºæéç客è§åº¦éï¼ä»¥åå è¼å §å®¹æéæéç主è§é«é©ã
ä¸åç«é»çåææéè¶é·ï¼å°±ææè¶å¤çç¨æ¶æ¾æ£éåç«é»ãéè¦çæ¯æå°åå è¼ååææéï¼ä¸¦æ·»å é¡å¤çç¹æ§ä¾é±èå»¶é²ï¼ä½¿é«é©ç¡å¯è½å¿«å°å¯ç¨ä¸¦å ·æäº¤äºæ§ï¼åæé忥å°å è¼é«é©çè¼é·å°¾é¨åã
æä¸äºå·¥å ·ãapi åæä½³å¯¦è¸å¯ä»¥å¹«å©æå度éåæ¹é² web æ§è½ãæåå°å¨æ¬ç¯ä»ç´¹å®å:
å¨éä¸ç¯ä¸
é¸å®çæç¨
MDN 網路æ§è½å¸ç¿é åå å«ç¾ä»£çãææ°çæç¨ï¼æ¶µèæ§è½è¦é»:
- ä»éº¼æ¯ç¶²è·¯æ§è½
-
æ¬æé¦å ä»ç´¹äºæ§è½å¯¦é䏿¯ä»éº¼âå æ¬å¨èæ ®æ§è½æéè¦èæ ®çå·¥å ·ãææ¨ãapiã網路å人å¡çµï¼ä»¥åå¦ä½å°æ§è½ä½çº web éç¼å·¥ä½æµçä¸é¨åã
- 網路æ§è½åºæ¬ç¥è
-
é¤äº HTMLãCSSãJavaScript ååªé«æªçå端çµä»¶å¤ï¼éæä¸äºç¹æ§å¯ä»¥ä½¿æç¨ç¨å¼è®æ ¢ï¼ä¹æä¸äºç¹æ§å¯ä»¥ä½¿æç¨ç¨å¼ä¸»è§ä¸å客è§ä¸è®å¾æ´å¿«ãè web æ§è½ç¸éç apiãéç¼å·¥å ·ãæä½³å¯¦è¸åä¸è¯å¯¦è¸æå¾å¤ãå¨éè£ï¼æåå°ä»ç´¹è¨±å¤åºæ¬ç´å¥çç¹æ§ï¼ä¸¦æä¾å°æ´æ·±å±¤æ¬¡ç鿥ï¼ä»¥æé«æ¯å主é¡çæ§è½ã
- ç¨æ¶å¦ä½çå¾ æ§è½?
-
æ¯ä½ çç¶²ç«å¨å¹¾æ¯«ç§å §æå¤å¿«æ´éè¦çæ¯ä½ çç¨æ¶èªçºä½ çç¶²ç«æå¤å¿«ãé é¢å è¼æéã空éæéãå°ç¨æ¶äº¤äºçåæä»¥å滾ååå ¶ä»åç«çæµæ¢æ§é½æå½±é¿éäºæç¥ã卿¬æä¸ï¼æåå°è¨è«å種å è¼ææ¨ãåç«ååææ§ææ¨ï¼ä»¥åæ¹é²ç¨æ¶æç¥çæä½³å¯¦è¸(妿䏿¯å¯¦éè¨ææ¬èº«)ã
- å¤åªé«:åååè¦é »
-
é常ï¼åªé«åªåæ¯ web æ§è½çæä½ææãæ ¹ææ¯åç¨æ¶ä»£ççåè½ã大å°ååç´ å¯åº¦æä¾ä¸åçåªé«æªæ¯å¯è½çãé¡å¤çæå·§ï¼æ¯å¦å¾èæ¯ååä¸åªé¤é³è»ï¼å¯ä»¥é²ä¸æ¥æé«æ§è½ã卿¬æä¸ï¼æåå°è¨è«è¦é »ãé³é »åååå §å®¹å°æ§è½çå½±é¿ï¼ä»¥å確ä¿å½±é¿ç¡å¯è½å°çæ¹æ³ã
- CSS æ§è½ç¹æ§
-
å°æ¼æ¹é²æ§è½ï¼CSS å¯è½ä¸æ¯å¾éè¦çåªåéé»ï¼ä½æ¯æä¸äº CSS ç¹æ§å°æ§è½çå½±é¿æ´å¤§ã卿¬æä¸ï¼æåå°ä»ç´¹ä¸äºå½±é¿æ§è½ç CSS 屬æ§ï¼ä¸¦ä»ç´¹ä¸äºèçæ¨£å¼çæ¹æ³ï¼ä»¥ç¢ºä¿ä¸æå°æ§è½é æè² é¢å½±é¿ã
ä½¿ç¨æ§è½ api
- æ§è½ç API
-
æ¬æåæè¿°äºå¦ä½ä½¿ç¨é«è§£æåº¦æéæ¨æºä¸å®ç¾©çæ§è½ä»é¢ã
- è³æºææ© API
-
è³æºå è¼åéäºè³æºçå è¼è¨æï¼å æ¬ç®¡çè³æºç·©è¡ååèç CORS
- è¡¨æ¼æé
-
æ§è½æéè»¸æ¨æºå®ç¾©äºå°æ§è½ä»é¢çæ´å±ï¼ä»¥æ¯ææç¨ç¨å¼ä¸ç客æ¶ç«¯å»¶é²æ¸¬éãéäºä»é¢å¯ä»¥ä¸èµ·ç¨ä¾å¹«å©ç¢ºå®æç¨ç¨å¼çæ§è½ç¶é ¸ã
- ç¨æ¶æé API
-
使ç¨ç¨æ¶è¨æ API çãæ¨è¨ãåã度éãæ¢ç®é¡åä¾åµå»ºç¹å®æ¼æç¨ç¨å¼çæéæ³ââ鿝æµè¦½å¨æ§è½æé表çä¸é¨åã
- å¹å®æ API
-
PerformanceFrameTiming ä»é¢æä¾æéæµè¦½å¨äºä»¶è¿´åçå¹è¨ææ¸æã
- çå¡ API
-
ä¿¡æ¨ä»é¢å°é忥åéé»å¡è«æ±èª¿åº¦å° web 伺æå¨ã
- ååè·¯å£è§å¯è API
-
å¸ç¿ä½¿ç¨äº¤éè§å¯è API å°å ç´ çå¯è¦æ§é²è¡è¨æï¼ä¸¦å¨æèè¶£çå ç´ è®å¾å¯è¦æå¾å°é忥éç¥ã
å ¶ä»ææª
- éç¼å·¥å ·æ§è½ç¹æ§
-
æ¬ç¯æä¾æéå¦ä½ä½¿ç¨åçè§£éç¼äººå¡å·¥å ·(å æ¬çå¸åãèª¿ç¨æ¨¹ååç«ç°å)ä¸çæ§è½ç¹æ§çè³è¨ã
- ç解延é²
-
延鲿¯æå¾æµè¦½å¨è«æ±è³æºå°æµè¦½å¨è¿åè«æ±çè³æºç第ä¸åä½å çµä¹éæè±è²»çæéãæ¬æå°è§£é延鲿¯ä»éº¼ãå®å¦ä½å½±é¿æ§è½ãå¦ä½åº¦éå»¶é²ä»¥åå¦ä½æ¸å°å»¶é²ã
è¡èªè¡¨
- Beacon
- Brotli compression
- Client hints
- Code splitting
- CSSOM
- Domain sharding
- Effective connection type
- First contentful paint
- First CPU idle
- First input delay
- First interactive
- First meaningful paint
- First paint
- HTTP
- HTTP/2
- Jank
- Latency
- Lazy load
- Long task
- Lossless compression
- Lossy compression
- Main thread
- Minification
- Network throttling
- Packet
- Page load time
- Page prediction
- Parse
- Perceived performance
- Prefetch
- Prerender
- QUIC
- RAIL
- Real User Monitoring
- Resource Timing
- Round Trip Time (RTT)
- Server Timing
- Speculative parsing
- Speed index
- SSL
- Synthetic monitoring
- TCP handshake
- TCP slow start
- Time to first byte
- Time to interactive
- TLS
- Transmission Control Protocol (TCP)
- Tree shaking
- Web performance
æªæå¾ æ¸å¯«
- JavaScript æ§è½æä½³å¯¦è¸
-
å¦æä½¿ç¨å¾ç¶ï¼JavaScript å¯ä»¥æä¾äºåå¼çãæ²æµ¸å¼ç web é«é©â¦â¦æè 宿å´éå½±é¿ä¸è¼æéãæ¸²ææéãæç¨ç¨å¼æ§è½ã黿± 壽å½åç¨æ¶é«é©ãæ¬ææ¦è¿°äºä¸äº JavaScript æä½³å¯¦è¸ï¼éäºå¯¦è¸å¯ä»¥ç¢ºä¿å³ä½¿æ¯è¤éå §å®¹çæ§è½ä¹æ¯æé«çã
- ææ©çæ§è½
-
é¨èç§»åè¨åä¸ç web 訪åè®å¾å¦æ¤æµè¡ï¼ææçç§»åå¹³èºé½ææçç web æµè¦½å¨ï¼ä½æ¯å¸¶å¯¬ãCPU å黿± 壽å½å¯è½æéï¼å æ¤èæ ®å¨éäºå¹³èºä¸ web å §å®¹çæ§è½é常éè¦ãæ¬æéè¨è«äºç¹å®æ¼ç§»åè¨åçæ§è½æ³¨æäºé ã
- ç解帶寬
-
å¸¶å¯¬æ¯æ¯ç§å¯ä»¥ç¼éç以å (Mb)æåæ¯ç¹(Kb)çºå®ä½çæ¸æéãæ¬æè§£éäºå¸¶å¯¬å¨å¯åªé« internet æç¨ç¨å¼ä¸çä½ç¨ï¼å¦ä½åº¦éå®ï¼ä»¥åå¦ä½åªåæç¨ç¨å¼ä»¥æå¤§é度å°å©ç¨å¯ç¨å¸¶å¯¬ã
- HTTP / 2 åä½
-
å³è¼¸å±¤(å³ HTTP)å° web çåè½è³ééè¦ï¼ç´å°æè¿æä»¥ HTTP/2 çå½¢å¼åºç¾éå¤§æ´æ°ãèå®çåè¼©ç¸æ¯ï¼HTTP/2 æä¾äºè¨±å¤éç®±å³ç¨çæ§è½æ¹é²ååªå¢ï¼ä½å®ä¹æ¹è®äºç°å¢ã卿¬æä¸ï¼ä½ å°çè§£ HTTP/2 çºä½ åäºä»éº¼ï¼ä»¥åå¦ä½å°æç¨ç¨å¼é²è¡èª¿åªï¼ä½¿å ¶æ´é²ä¸æ¥ã
- TLS 卿§è½ä¸çä½ç¨
-
å¨åµå»ºå®å ¨çç¨æ¶é«é©æï¼tlls(æåå¾åæ¼ç¨±ä¹çº HTTPS)æ¯è³ééè¦çãéç¶ç¡¬é«å·²ç¶æ¸å°äº TLS å°ä¼ºæå¨æ§è½çè² é¢å½±é¿ï¼ä½å®ä»ç¶å äºæåçå¾ æµè¦½å¨é£æ¥å°ä¼ºæå¨æç¨æéçå¾å¤§ä¸é¨åãæ¬æè§£éäº TLS æ¡æéç¨ï¼ä¸¦æä¾äºä¸äºæ¸å°é種æéçæå·§ï¼å¦ OCSP è£è¨ãHSTS é å è¼é ï¼ä»¥åè³æºæç¤ºå¨æ©èç¬¬ä¸æ¹ TLS 延鲿¹é¢çæ½å¨ä½ç¨ã
- è®æ§è½å表
-
éç¼äººå¡å·¥å ·æä¾æéæ§è½ãè¨æ¶é«åç¶²è·¯è«æ±çè³è¨ãçè§£å¦ä½å¨æµè¦½å¨éç¼äººå¡å·¥å ·ä¸è®åçå¸åãèª¿ç¨æ¨¹ãè·è¹¤ãç«ç°åååé ï¼å°æå©æ¼ä½ å¨å ¶ä»æ§è½å·¥å ·ä¸çè§£çå¸ååç«ç°åã
- åæ JavaScript å
-
毫ç¡çåï¼JavaScript æ¯ç¾ä»£ web éç¼çéè¦çµæé¨åãéç¶ä½ æè©²å§çµåªåæ¸å°æç¨ç¨å¼ä¸ä½¿ç¨ç JavaScript çæ¸éï¼ä½æ¯å¾é£ç¥éå¾åªééå§ã卿¬æåä¸ï¼æåå°åä½ å±ç¤ºå¦ä½åææç¨ç¨å¼çè ³æ¬å ï¼ä»¥ä¾¿ä½ çè§£èªå·±å¨ä½¿ç¨ä»éº¼ï¼ä»¥åå¦ä½æª¢æ¸¬æç¨ç¨å¼æ¯å¦å å«å ä¹éçéè¤è ³æ¬ã
- å»¶é²å è¼
-
å¨åå§é é¢å è¼æå è¼ææ web æç¨ç¨å¼è³ç¢ä¸¦ä¸ç¸½æ¯å¿ è¦çãå»¶é²å è¼æ¯å°é é¢ä¸çè³ç¢(å¦è ³æ¬ãååç)çå è¼å»¶é²å°ä»¥å¾çæåæéé»ãç¶éäºè³ç¢ç¢ºå¯¦éè¦çæåã
- ä½¿ç¨ import()å»¶é²å è¼ JavaScript
-
è¡èªãå»¶é²å è¼ãé常æå è¼æä¸éè¦çè³ç¢çå»¶é²å è¼æè¡ï¼ä¾å¦å å¨ååæ»¾åå°è¦å䏿æå è¼æçä¸éºµçååãç¾å¨æäºå è¼ JavaScript çæ¬å°ç¹æ§!卿¬æåä¸ï¼æåå°è¨è« dynamic import()èªå¥ï¼éæ¯ä¸åè¼æ°çæµè¦½å¨ç¹æ§ï¼å¯ä»¥æ ¹æéè¦å è¼ JavaScript 模çµã
- 使ç¨è³æºæç¤ºæ§å¶è³æºäº¤ä»
-
ç¶æ¶åå°è³æºåªå é åºåäº¤ä»æï¼æµè¦½å¨éå¸¸æ¯æåæ´æ¸ æ¥ï¼ä½æ¯ä»åé¢ clairyovant éå¾é ãæ¬å°æµè¦½å¨ç¹æ§ä½¿æåè½å¤ 卿µè¦½å¨é£æ¥å°å¦ä¸å伺æå¨ææç¤ºå®ï¼æè 卿µè¦½å¨ç¥éå®éè¦è³æºä¹åé å è¼è³æºãå¦æä½¿ç¨å¾ç¶ï¼éå¯ä»¥è®å¿«éé«é©çèµ·ä¾æ´å¿«ã卿¬æä¸ï¼æåå°ä»ç´¹ä¸äºæ¬å°æµè¦½å¨ç¹æ§ï¼å¦ rel=preconnectãrel=dn -prefetchãrel=prefetch å rel=preloadï¼ä»¥åå¦ä½å åå©ç¨å®åã
- 績æé ç®
-
å¸å ´è¡é·ãè¨è¨åé·å®éæ±ï¼ä»¥åéç¼äººå¡çç¶é©ï¼é常æ¯å»£åè¨è¹ãç¬¬ä¸æ¹è ³æ¬åå ¶ä»æéä½ web æ§è½çç¹æ§ãçºäºå¹«å©è¨ç½®åªå é åºï¼æå¥½è¨ç½®ä¸åæ§è½é ç®:ä¸çµå¨éç¼é段ä¸è½è¶ éçéå¶ã卿¬æä¸ï¼æåå°è¨è«å¦ä½åµå»ºåå ææ§è½é ç®ã
- 網路æ§è½æª¢æ¥è¡¨
-
å¨éç¼å¸¶æå¦ä½å¯¦ç¾æ¯åç¹æ§çæç¨éæ¥çæç¨ç¨å¼æï¼éè¦èæ ®çç¹æ§æ§è½æª¢æ¥è¡¨ï¼å æ¬æå人å¡ãè¨ºæ·æ§è½åé¡ãåé«å è¼æä½³å¯¦è¸ã客æ¶ç«¯æç¤ºãåµå»ºæ§è½åç«çã
- ææ©æ§è½æª¢æ¥è¡¨
-
å½±é¿ç§»åç¶²è·¯ç¨æ¶å¨ææé»æ± æä½è¨åä¸çæ§è½èæ ®çç°¡ææ¸ å®ã
æç¨ç¨å¼çæ§è½
- æ§è½çåºç¤
-
å° Web æç¨ç¨å¼æ§è½çå»£æ³æ¦è¿°ï¼å®æ¯ä»éº¼ï¼æµè¦½å¨å¦ä½å¹«å©æ¹é²å®ï¼ä»¥åä½ å¯ä»¥ä½¿ç¨ä»éº¼å·¥å ·åæµç¨ä¾æ¸¬è©¦åé²ä¸æ¥æ¹é²å®ã
- åªåååæ§è½
-
å¨ç·¨å¯«æ°æç¨ç¨å¼åå°æç¨ç¨å¼å¾å ¶ä»å¹³èºç§»æ¤å° Web 䏿ï¼å¹«å©ä½ æé«ååæ§è½çæå·§å建è°ã
- 使ç¨å §ç½®çåæå¨é²è¡åæ
-
çè§£å¦ä½ä½¿ç¨ Firefox çå §ç½®åæå¨åææç¨ç¨å¼æ§è½ã
- CSS å JavaScript åç«æ§è½
-
åç«æ¯ä¸åæå¿«çç¨æ¶é«é©çééµãæ¬æè¨è«äº CSS ååºæ¼ javascript çåç«ä¹éçæ§è½å·®ç°
See also
HTML
CSS
- will-change
- GPU v CPU
- Measuring layout
- Font-loading best practices
JavaScript
APIs
-
Resource Hints - dns-prefetch, preconnect, prefetch, and prerender
Headers
- Content-encoding
- HTTP/2
- gZip
- Client Hints
Tools
- Performance in Firefox Developer Tools
- Flame charts
- The Network panel
- Waterfall charts
Additional Metrics
- Speed Index and Perceptual Speed Index
Best Practices
-
Content Delivery Networks (CDN)