當前位置:首頁 » 網頁前端 » 前端代碼如何優化
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端代碼如何優化

發布時間: 2022-09-06 01:24:28

A. Web前端工程師要掌握的Web前端性能優化方法

今天小編要跟大家分享的文章是關於Web前端工程師要掌握的Web前端性能優化方法。正在從事Web前端工作的小夥伴們來和小編一起看一看吧,希望本篇文章能夠對正在從事Web前端工作的小夥伴們有所幫助。

Web前端需要性能優化么?


性能優化一直以來都是前端工程領域中的一個重要部分。很多資料表明,網站應用的性能優化對於提高用戶留存、轉化率等都有積極影響。可以理解為,提升你的網站性能,就是提升你的業務數據(甚至是業務收入)。


性能優化廣義上包含前端優化和後端優化。後端優化的關注點更多的時候是在增加資源利用率、降低資源成本以及提高穩定性上。相較於後端,前端的性能優化會更直接與用戶的體驗掛鉤。從用戶體驗側來說,前端服務
5s的載入時間優化縮減80%(1s)與後端服務50ms的響應優化縮減80%(10ms)
相比,用戶的體驗提升會更大。因此很多時候,與體驗相關的性能的瓶頸會出現在前端。


我和一些同學接觸的過程中,發現作為前端工程師,大家其實都具備一定的性能優化意識,同時也有自己的優化「武器庫」,例如懶載入、資源合並、避免reflow
等等。雖然大家對性能優化都有自己的思路,不過大多是分散在某幾個點,較難形成一個完整的體系。


一、html文檔結構標簽語義化


1、首先什麼是語義化呢?


語義化是指用合理HTML標記以及其特有的屬性去格式化文檔內容。機器在需要更少的人類干預的情況下能夠研究和收集信息,讓網頁能夠被機器理解,最終讓人類受益。即用正確的標簽做正確的事。


2、語義化的好處或者說存在的意義


①有利於搜索引擎抓取


②結構清晰的HTML在團隊合作中的作用:代碼可讀、便於維護、提高開發效率、快速達成共識、利於二次開發。


③有利於盲人屏幕閱讀器


二、css、js文件數量及大小


優化一般對於css、js是建議使用外聯式來進行導入。我們可以對css、js做相應的規劃也可以減少css、js的個數以減少http請求。同時也要注重減少重復代碼,注重代碼重復利用,以達到用最少的代碼干最多的事。同時當項目要投入上線使用的時候,可以對css、js文件進行壓縮,文件的減小可以加速文件的鏈接導入,以便加速網頁的載入渲染。


可通過使用Webpack,gulp等工具對Js文件進行合並。


三、圖片的數量和大小


多個伺服器請求會對站點的性能產生顯著的影響。對一張圖片進行導入又是一個http請求,因此我們應該減少圖片的導入數量以便減少http請求。此處,我們必須提到一個名詞「css精靈spirit」。css精靈是指包含多個不同的圖標、按鈕或圖形的單個圖像。因此我們可以把多張背景圖片合並為一張然後對背景圖片進行相應的定位。同時使用PNG8格式的圖片相對於GIF來說比較少。而對於內容圖片,可以對其進行適當的壓縮,可以加快文檔內容載入,或者如果是需要用戶下載的圖片,小的圖片可以加快用戶下載的速度。


使用較為廣泛的Web圖片格式有:JPEG/JPG、PNG、WEBP、Base64、SVG。


1.JPEG/JPG


特點是有損壓縮,體積小,載入快,不支持透明。


使用場景:JPG適合用於呈現熱菜豐富的圖片,在日常的開發中,JPG圖片經常作為大的背景圖、輪播圖或是Banner圖。比如兩大電商網站對大圖片的處理,就是對JPG圖片應用場景的最佳寫照。用JPG來呈現大圖片,既可以保留圖片的質量,又不會擔心圖片的體積,是一種比較廣泛使用的方案。


缺點:在處理一些矢量圖形和logo等這些線條感很強、顏色對比強烈的圖片時,認為壓縮就導致圖片模糊非常明顯。另外,JPG圖像不支持透明度處理,透明圖片只能用PNG來呈現了。


2.PNG-8和PNG-24


特點是無損壓縮、質量高、體積大、支持透明


優點:無損壓縮的高保真圖片格式。8和24都是二進制數的位數,8位的PNG支持256中顏色,24位的PNG可以支持1600萬種顏色。在不考慮文件大小隻在乎最佳的顯示效果時,推薦使用PNG-24。但是在適合使用PNG時會優先選擇PNG-8


應用場景:主要用PNG來呈現小的LOGO、顏色簡單對比強烈的圖片或是背景。


3.SVG


特點是文本文件,體積小,不失真,兼容性好


優點:SVG是一種基於XML語法的圖像格式。SVG對圖像的處理不是基於像素,而是基於對圖像的形狀描述。


和JPG、PNG相比較,SVG文件體積更小,可壓縮性更強。SVG作為矢量圖最大的優點在於圖片可以無限放大還不失真,一張SVG圖片可以適配多種解析度。另外SVG是文本文件,可以像寫代碼一樣定義SVG,放在HTML中稱為DOM的一部分。也可以把對圖像的描述寫入以.svg為後綴的文件中,在img標簽中引入即可。


4.WebP


優點:WebP是一款比JPG、PNG等在壓縮方面更加優越的圖片格式,同時也不會影響其圖片質量,使用該格式時最好將同名文件格式化,當檢測瀏覽器不兼容時自動切換jpg格式


缺點:是一個相對較新的技術,所以對於目前市面上的瀏覽器能否完美的兼容,其可用和實用性就變得很現實了,再好的東西如果沒有好的兼容性,也是非常難以普及和被廣泛使用的


5.Base64


優點:減少請求,加快首屏數據顯示。對於jpg格式的圖片,每一個圖片相當於一次http請求,圖片多了的話,伺服器耗性能比較嚴重。而將jpg轉化成base64格式的圖片,則極大地減少了請求數,因為Base是文本格式。


缺點:base64格式圖片比原圖大,佔用更多存儲空間,同時,瀏覽器不會對該資源緩存


使用方法:background:url(data:image/png;base64,{img_data})


應用場景:一般對於小於10KB大小的圖片進行base64轉碼。


至於動態圖有GIF與APNG:後者APNG這東西是mozilla搞出來的,
它是24位的,而且也是動圖,可以容納1680萬種顏色,也是為了取代GIF,但是....也就火狐支持,IE10和chrome,safari全部不行,
如果說gif圖片是卡片機的話,APNG就是單反


四、有效性驗證


除了根據語義加標記之外,HTML文檔還需要用有效的代碼來編寫,如果代碼是無效的,瀏覽器會嘗試解釋標記本身,有時候會產生錯誤的結果。更糟的是,如果發送具有正確的MIME類型的XHTML文檔,理解XML的瀏覽器將不顯示無效的頁面。因為瀏覽器需要知道要使用什麼DTD(文檔類型定義)才能正確地處理頁面,所以對頁面進行有效性驗證要求有DOCTYPE聲明。


有效性驗證工具徑:



W3C驗證器(bookmarklet),這是一小段可以存儲在瀏覽器的書簽或收藏夾中的Javascript。單擊這個書簽就會觸發Javascript動作。


②可以訪問http://validator.w3.org/,通過輸入自己的URL來對自己的站點來進行在線驗證。


③使用firefox瀏覽器的可以下載插件FirefoxWebDeveloperExtension


五、雅虎的Web優化最佳實踐


1、內容優化


①盡量減少HTTP請求:常見方法包括合並多個CSS文件和JavaScript文件,利用CSSSprites整合圖像,Image
map(圖像中不同的區域設置不同的鏈接),內聯圖象(使用data:URLscheme在實際的頁面嵌入圖像數據)等。


②減少DNS查找,一般dns查找需要花費20-120ms,Windows的DNS緩存,可以通過ipconfig/displaydns
這個命令來查看。


③避免重定向


④使Ajax可緩存


⑤延遲載入組件:考慮哪些內容是頁面呈現時所必需首先載入的、哪些內容和結構可以稍後再載入,根據這個優先順序進行設定。



預載入組件:預載入是在瀏覽器空閑時請求將來可能會用到的頁面內容(如圖像、樣式表和腳本)。當用戶要訪問下一個頁面時,頁面中的內容大部分已經載入到緩存中了,因此可以大大改善訪問速度。


⑦減少DOM元素數量:頁面中存在大量DOM元素,會導致JavaScript遍歷DOM的效率變慢。


⑧根據域名劃分頁面內容:把頁面內容劃分成若幹部分可以使你最大限度地實現平行下載。但要確保你使用的域名數量在2個到4個之間(否則與第2條沖突)。


⑨最小化iframe的數量:iframes
提供了一個簡單的方式把一個網站的內容嵌入到另一個網站中。但其創建速度比其他包括JavaScript和CSS的DOM元素的創建慢了1-2個數量級。



避免404:HTTP請求時間消耗是很大的,因此使用HTTP請求來獲得一個沒有用處的響應(例如404沒有找到頁面)是完全沒有必要的,它只會降低用戶體驗而不會有一點好處。


2、伺服器優化


①使用內容分發網路(CDN):把你的網站內容分散到多個、處於不同地域位置的伺服器上可以加快下載速度。


添加Expires或Cache-Control信息頭:對於靜態內容,可設置文件頭過期時間Expires的值為「Never
expire(永不過期)」;對於動態內容,可使用恰當的Cache-Control文件頭來幫助瀏覽器進行有條件的請求。


②Gzip壓縮


③設置ETag:ETags(Entity
tags,實體標簽)是Web伺服器和瀏覽器用於判斷瀏覽器緩存中的內容和伺服器中的原始內容是否匹配的一種機制。



提前刷新緩沖區:當用戶請求一個頁面時,伺服器會花費200到500毫秒用於後台組織HTML文件。在這期間,瀏覽器會一直空閑等待數據返回。在PHP中,可以使用flush()方法,它允許你把已經編譯的好的部分HTML響應文件先發送給瀏覽器,這時瀏覽器就會可以下載文件中的內容(腳本等)而後台同⑤時處理剩餘的HTML頁面。



對Ajax請求使用GET方法:當使用XMLHttpRequest時,瀏覽器中的POST方法會首先發送文件頭,然後才發送數據。因此使用GET最為恰當。


⑦避免空的圖像src


3、Cookie優化


①減小cookie大小:去除不必要的coockie,並使coockie體積盡量小以減少對用戶響應的影響



針對Web組件使用域名無關的Cookie:對靜態組件的Cookie讀取是一種浪費,使用另一個無Cookie的域名來存放靜態組件是一個好方法,或者也可以在Cookie中只存放帶www的域名。


4、CSS優化


①將CSS代碼放在HTML頁面的頂部


②避免使用CSS表達式:CSS表達式在執行時候的運算量非常大,會對頁面性能產生大的影響


③使用來代替@import


④避免使用Filters:IE獨有屬性AlphaImageLoader用於修正IE
7以下版本中PNG圖片的半透明效果,但它的問題在於瀏覽器載入圖片時它會終止內容的呈現並且凍結瀏覽器。


5、JavaScript優化


①將JavaScript腳本放在頁面的底部



將JavaScript和CSS作為外部文件來引用:在實際應用中使用外部文件可以提高頁面速度,因為JavaScript和CSS文件都能在瀏覽器中產生緩存。


③縮小JavaScript和CSS


④刪除重復的腳本


⑤最小化DOM的訪問:使用JavaScript訪問DOM元素比較慢


⑥開發智能的事件處理程序


6、圖像優化


①優化圖片大小


②通過CSSSprites優化圖片


③不要在HTML中使用縮放圖片


④favicon.ico要小而且可緩存


7、針對移動優化


①保持組件大小在25KB以下:主要是因為iPhone不能緩存大於25K的文件(注意這里指的是解壓縮後的大小)。


②將組件打包成為一個復合文檔:把頁面內容打包成復合文本就如同帶有多附件的Email,它能夠使你在一個HTTP請求中獲取多個組件。


以上就是小編今天為大家分享的關於Web前端工程師要掌握的Web前端性能優化方法的文章,希望本篇文章能夠對正在從事Web前端工作的小夥伴們有所幫,想要了解更多Web前端工作的小夥伴們記得關注北大青鳥Web培訓官網最後祝願小夥伴們工作順利!


B. 前端性能優化的具體方法有哪些

解決辦法一:

減少http請求次數:CSS Sprites, JS、CSS源碼壓縮、圖片大小控制合適;網頁Gzip,CDN託管,data緩存 ,圖片伺服器。
前端模板 JS+數據,減少由於HTML標簽導致的帶寬浪費,前端用變數保存AJAX請求結果,每次操作本地變數,不用請求,減少請求次數
用innerHTML代替DOM操作,減少DOM操作次數,優化javascript性能。
當需要設置的樣式很多時設置className而不是直接操作style。
少用全局變數、緩存DOM節點查找的結果。減少IO讀取操作。
避免使用CSS Expression(css表達式)又稱Dynamic properties(動態屬性)。
圖片預載入,將樣式表放在頂部,將腳本放在底部 加上時間戳。
解決辦法二:

減少HTTP請求次數
使用CDN:CDN在前端開發的作用
避免空的src和href
為文件頭指定Expires
使用gzip壓縮內容
把CSS放到頂部
把JS放到底部
避 免使用CSS表達式
將CSS和JS放到外部文件中
避免跳轉
可緩存的AJAX
使用GET來完成AJAX請求

C. Web前端新手該如何進行性能優化

今天小編要跟大家分享的文章是關於Web前端新手該如何進行性能優化?影響用戶訪問的最大部分是前端的頁面。網站的劃分一般為二:前端和後台。我們可以理解成後台是用來實現網站的功能的,比如:實現用戶注冊,用戶能夠為文章發表評論等等。而前端呢?其實應該是屬於功能的表現。


而我們建設網站的目的是什麼呢?不就是為了讓目標人群來訪問嗎?所以我們可以理解成前端才是真正和用戶接觸的。

除了後台需要在性能上做優化外,其實前端的頁面更需要在性能優化上下功夫,只有這樣才能給我們的用戶帶來更好的用戶體驗。不僅僅如此,如果前端優化得好,他不僅可以為企業節約成本,他還能給用戶帶來更多的用戶,因為增強的用戶體驗。說了這么多,那麼我們應該如何對我們前端的頁面進行性能優化呢?下面來和小編一起看一看吧!


一、content方面


1,減少HTTP請求:合並文件、CSS精靈、inlineImage


2,減少DNS查詢:DNS查詢完成之前瀏覽器不能從這個主機下載任何任何文件。方法:DNS緩存、將資源分布到恰當數量的主機名,平衡並行下載和DNS查詢


3,避免重定向:多餘的中間訪問


4,使Ajax可緩存


5,非必須組件延遲載入


6,未來所需組件預載入


7,減少DOM元素數量


8,將資源放到不同的域下:瀏覽器同時從一個域下載資源的數目有限,增加域可以提高並行下載量


9,減少iframe數量


10,不要404


二、Server方面


1,使用CDN


2,添加Expires或者Cache-Control響應頭


3,對組件使用Gzip壓縮


4,配置ETag


5,FlushBufferEarly


6,Ajax使用GET進行請求


7,避免空src的img標簽


三、cookie方面


1,減小cookie大小


2,引入資源的域名不要包含cookie


四、CSS方面


1,將樣式表放到頁面頂部


2,不使用CSS表達式


3,使用不使用@import


4,不使用IE的Filter


五、JavaScript方面


1,將腳本放到頁面底部


2,將javascript和css從外部引入


3,壓縮javascript和css


4,刪除不需要的腳本


5,減少DOM訪問


6,合理設計事件監聽器、


六、圖片方面


1,優化圖片:根據實際顏色需要選擇色深、壓縮


2,優化css精靈


3,不要在HTML中拉伸圖片


4,保證favicon.ico小並且可緩存


七、移動方面


1,保證組件小於25k


2,


以上就是小編今天為大家分享的關於Web前端新手該如何進行性能優化的文章,希望本篇文章能夠對正在從事Web前端工作的小夥伴們有所幫助。想要了解更多Web前端相關知識記得關注北大青鳥Web培訓官網。最後祝願小夥伴們工作順利,成為一名優秀的Web前端工程師!


D. 如何對前端性能進行優化

前端開發代碼優化、可維護性、瀏覽器兼容性是非常重要的課題。從實際的工程應用角度出發,最常遇見的前端優化問題。前端性能進行優化規則,基本可以涵蓋現在前端大部分的性能優化原則了,很多更加geek和精細優化方法都是從這些原則裡面延伸出來的。

前端性能進行優化都有哪些規則

  1. 減少HTTP請求次數

    盡量合並圖片、CSS、JS。比如載入一個頁面有5個css文件的話,把這個5個文件合成一個的話,就只需要發出一次http請求,節省網路請求時間,加快頁面的載入。

2. 使用CDN

網站上靜態資源即css、js全都使用cdn分發,包括圖片

3. 避免空的src和href

當link標簽的href屬性為空、script標簽的src屬性為空的時候,瀏覽器渲染的時候會把當前頁面的URL作為它們的屬性值,從而把頁面的內容載入進來作為它們的值。所以要避免犯這樣的疏忽。

4. 為文件頭指定Expires

Exipres是用來設置文件的過期時間的,一般對css、js、圖片資源有效。 他可以使內容具有緩存性,這樣下回再訪問同樣的資源時就通過瀏覽器緩存區讀取,不需要再發出http請求。如下例子:

新浪微博的這個css文件的Expires時間是2016-5-04 09:14:14.

5. 使用gzip壓縮內容

gzip能夠壓縮任何一個文本類型的響應,包括html,xml,json。大大縮小請求返回的數據量。

6. 把CSS放到頂部

網頁上的資源載入時從上網下順序載入的,所以css放在頁面的頂部能夠優先渲染頁面,讓用戶感覺頁面載入很快。

7. 把JS放到底部

載入js時會對後續的資源造成阻塞,必須得等js載入完才去載入後續的文件 ,所以就把js放在頁面底部最後載入。

8. 避免使用CSS表達式

舉個css表達式的例子

font-color: expression( (new Date()).getHours()%3 ? 「#FFFFFF" : 「#AAAAAA" );

這個表達式會持續的在頁面上計算樣式,影響頁面的性能。並且css表達式只被IE支持。

9. 將CSS和JS放到外部文件中

目的是緩存文件,可以參考原則4。 但有時候為了減少請求,也會直接寫到頁面里,需根據PV和IP的比例權衡。

10. 權衡DNS查找次數

減少主機名可以節省響應時間。但同時,需要注意,減少主機會減少頁面中並行下載的數量。

IE瀏覽器在同一時刻只能從同一域名下載兩個文件。當在一個頁面顯示多張圖片時,IE 用戶的圖片下載速度就會受到影響。所以新浪會搞N個二級域名來放圖片。

下面是新浪微博的圖片域名,我們可以看到他有多個域名,這樣可以保證這些不同域名能夠同時去下載圖片,而不用排隊。不過如果當使用的域名過多時,響應時間就會慢,因為不用響應域名時間不一致。

11. 精簡CSS和JS

這里就涉及到css和js的壓縮了。比如下面的新浪的一個css文件,把空格回車全部去掉,減少文件的大小。現在的壓縮工具有很多,基本主流的前端構建工具都能進行css和js文件的壓縮,如grunt,glup等。

12. 避免跳轉

有種現象會比較坑爹,看起來沒什麼差別,其實多次了一次頁面跳轉。比如當URL本該有斜杠(/)卻被忽略掉時。例如,當我們要訪問http:// .com時,實際上返回的是一個包含301代碼的跳轉,它指向的是http:// .com/(注意末尾的斜杠)。在nginx伺服器可以使用rewrite;Apache伺服器中可以使用Alias 或者 mod_rewrite或者the DirectorySlash來避免。

另一種是不用域名之間的跳轉, 比如訪問http:// .com/bbs跳轉到http:// bbs..com/。那麼可以通過使用Alias或者mod_rewirte建立CNAME(保存一個域名和另外一個域名之間關系的DNS記錄)來替代。

13. 刪除重復的JS和CSS

重復調用腳本,除了增加額外的HTTP請求外,多次運算也會浪費時間。在IE和Firefox中不管腳本是否可緩存,它們都存在重復運算JavaScript的問題。

14. 配置ETags

它用來判斷瀏覽器緩存里的元素是否和原來伺服器上的一致。比last-modified date更具有彈性,例如某個文件在1秒內修改了10次,Etag可以綜合Inode(文件的索引節點(inode)數),MTime(修改時間)和Size來精準的進行判斷,避開UNIX記錄MTime只能精確到秒的問題。 伺服器集群使用,可取後兩個參數。使用ETags減少Web應用帶寬和負載

15. 可緩存的AJAX

非同步請求同樣的造成用戶等待,所以使用ajax請求時,要主動告訴瀏覽器如果該請求有緩存就去請求緩存內容。如下代碼片段, cache:true就是顯式的要求如果當前請求有緩存的話,直接使用緩存

$.ajax({ url : 'url', dataType : "json", cache: true, success : function(son, status){ }

16. 使用GET來完成AJAX請求

當使用XMLHttpRequest時,瀏覽器中的POST方法是一個「兩步走」的過程:首先發送文件頭,然後才發送數據。因此使用GET獲取數據時更加有意義。

17. 減少DOM元素數量

這是一門大學問,這里可以引申出一堆優化的細節。想要具體研究的可以看後面推薦書籍。總之大原則減少DOM數量,就會減少瀏覽器的解析負擔。

18. 避免404

比如外鏈的css、js文件出現問題返回404時,會破壞瀏覽器的並行載入。

19. 減少Cookie的大小

Cookie裡面別塞那麼多東西,因為每個請求都得帶著他跑。

20. 使用無cookie的域

比如CSS、js、圖片等,客戶端請求靜態文件的時候,減少了 Cookie 的反復傳輸對主域名的影響。

21. 不要使用濾鏡

IE獨有屬性AlphaImageLoader用於修正7.0以下版本中顯示PNG圖片的半透明效果。這個濾鏡的問題在於瀏覽器載入圖片時它會終止內容的呈現並且凍結瀏覽器。在每一個元素(不僅僅是圖片)它都會運算一次,增加了內存開支,因此它的問題是多方面的。

完全避免使用AlphaImageLoader的最好方法就是使用PNG8格式來代替,這種格式能在IE中很好地工作。如果你確實需要使用AlphaImageLoader,請使用下劃線_filter又使之對IE7以上版本的用戶無效。

22. 不要在HTML中縮放圖片

比如你需要的圖片尺寸是50* 50

那就不用用一張500*500的大尺寸圖片,影響載入

23. 縮小favicon.ico並緩存

E. Web前端新手要掌握的性能優化

今天小編要跟大家分享的文章是關於Web前端新手要掌握的性能優化知識。本文將分享一些前端性能優化的常用手段,包括減少請求次數、減小資源大小、各種緩存、預處理和長連接機制,以及代碼方面的性能優化等方面。下面來和小編一起看一看吧!

base64:尤其是在移動端,小圖標可以base64(webpack),大圖片慎用(如果載入速度過於慢的,而且很重要的圖片,可以用base64)


1、減少HTTP的請求次數和傳輸報文的大小


「CSSSprite(雪碧圖、圖片精靈)技術」


使用字體圖標(IconFont)或者SVG等矢量圖


+減少HTTP請求次數或者減少請求內容的大小


+渲染更快:因為它們是基於代碼渲染的,而對於點陣圖(png/jpg/gif)是需要先把圖片編碼在渲染


+不容易是幀變形


+也可以使用webp格式圖片,這種格式要小一些(但是需要伺服器端支持這種格式的請求處理)


「圖片懶載入(延遲載入)技術」


+第一次載入頁面的時候不去請求真實的圖片,提高第一次渲染頁面的速度,請求圖片的額外消耗盡可能不要處理


+當頁面載入完,把出現在用戶視野區域中的圖片做真實載入,沒有出現的先不載入(節約流浪,也能減少對伺服器的請求壓力)


o對於數據我們也盡可能分批載入(不要一次請求過多的數據,例如分頁技術)


音視頻文件取消預載入(preload='none'),這樣可以增加第一次渲染頁面的速度,當需要播放的時候在載入


客戶端和伺服器端的數據傳輸盡可能基於JSON格式完成,XML格式比JSON格式要大一些(還可以基於二進制編碼或者文件流格式,這種格式比文件傳輸好很多)


「把頁面的css/js等文件進行合並壓縮」


合並:爭取css和js都只導入一個(webpack可以實現並合並壓縮哦)


壓縮:基於webpack可以壓縮,對於圖片自己找工具先壓縮,可以使用伺服器的GZIP壓縮


圖片BASE64(用BASE64碼代表圖片,減少HTTP,增加瀏覽器渲染速度,所以真是項目中,尤其是移動端,如果圖片載入緩慢,BASE64一下就好了,;但是base64會導致文件中心的代碼超級惡心,不利於維護和開發,所以減少使用);webpack中科院配置圖片


2、設置各種緩存、預處理和長連接機制


不經常更改的靜態資源做緩存處理(一般做的是304或者ETAG等協商緩存)


「建立Cache-Control和ExpiresHTTP的強緩存」


DNS緩存或者預處理(DNSPrefetch),減少DNS的查找


設置本地的離線存儲(manifest)或者把一些不經常更改的數據做本地臨時存儲(webstorage,indexdb)等


有錢就做CDN(地域分布式伺服器),或者加伺服器


「建立Connection:keep-aliveTcp長連接」


使用HTTP2版本協議(現在用的一般都是http1.1),可以多條tcp通道共存=>管道化鏈接


一個項目分為不同的域(不同的伺服器),例如:資源web伺服器、數據伺服器,圖片伺服器,視頻伺服器等,合理利用伺服器資源,但是導致過多的DNS解析


Cache-Control的優先順序高於Expires


基於本地存儲,做數據的存儲


3、代碼方面的性能優化


減少對閉包的使用(因為過多使用閉包會產生很多不銷毀的內存,處理不好的話,會導致內存溢出「棧溢出」),減少閉包的嵌套(減少作用域鏈的查找層級)


對於動畫來說:能用css解決的不用js(能夠用transform處理的,不用傳統的css樣式,因為transform開啟硬體加速,不會引發迴流,或者使用定位的元素也會好很多,因為定位的元素脫離文檔流,不會對其他元素的位置造成影響),能用
requestAnimationFrame解決的不用定時器


+用requestAnimationFrame還有一個好處,當頁面處於休眠無訪問狀態,動畫會自己暫停,知道回復訪問才開始,而定時器是不論什麼狀態,只要頁面不管,就一直處理


避免使用iframe(因為iframe會嵌入其他頁面,這樣父頁面渲染的時候,還要同時把子頁面也渲染了,渲染進度會變慢)


減少直接對DOM的操作(原因是減少DOM的迴流和重繪...),當代項目基本基於mvvm,mvc數據驅動視圖渲染的,對DOM的操作框架本身完成,性能要好很多


低耦合高內聚(基於封裝的方式:方法封裝,插件,組件,框架,類庫等封裝,減少頁面中的冗餘代碼,提高代碼使用率)


盡可能使用事件委託


避免出現死循環或者嵌套循環(嵌套循環會成倍增加循環的次數)


項目中盡可能使用非同步編程來模擬出多線程的效果,避免主線程阻塞(非同步操作基於Promise設計模式來管理)


JS中不要使用with


避免使用css表達式


函數的防抖和節流


減少使用eval(主要原因是防止壓縮代碼的時候,由於符號書寫不合規,導致代碼混亂)


圖片地圖:對於多次調取使用的圖片(尤其是背景圖),盡可能把它提取成為公共的樣式,而不是每一次重新設置background


減少filter濾鏡的使用


盡可能減少選擇器的層級


盡可能減少table布局


手動回收堆棧內存(賦值為null)


「棧溢出:死遞」


functionfunc(){


func();


}func();


解決方案:


functionfunc(){


setTimeout(func,0);


}func();


相互引用:引用類型之間的相互調用,形成嵌套式內存


letobj1={


name:'obj1',};


letobj2={


name:'obj2',


x:obj1}


obj1.x=obj2;


以上就是小編今天為大家分享的關於Web前端新手要掌握的性能優化知識的文章,希望本篇文章能夠對正在從事web前端工作的小夥伴們有所幫助,想要了解更多web前端知識記得關注北大青鳥web培訓官網,最後祝願小夥伴們工作順利,成為一名優秀的web前端工程師。


F. Web前端開發要學習的網頁優化技巧有哪些

今天小編要跟大家分享的文章是關於Web前端開發要學習的網頁優化技巧有哪些?現在,有越來越多所謂的「教程」來幫助我們提高網站的易用性。小編收集了一些在Web開發中容易出錯和被忽略的小問題,並且提供了參考的解決方案,以便於幫助Web開發者更好的完善網站。下面來和小編一起看一看吧!

通過避免下面這些小錯誤,可以使得我們的網站變得更為友好。


錯誤1:表單的label標簽跟表單欄位沒有關聯


利用「for」屬性允許用戶單擊label也可以選中表單中的內容。這可以擴大復選框和單選框的點擊區域,非常實用。


錯誤2:logo圖片沒有鏈接到主頁


點擊網站logo就能轉到主頁已經成為了網民的條件反射。此外,值得一提的是,logo是指定放於左上角的。


錯誤3:不能區分是否已經訪問過該鏈接


訪問過的連接狀態應該與沒有訪問過的有所區別,以便於讓用戶直觀地明白哪個鏈接已經點擊過了。


錯誤4:沒有突出當前選中激活的表單項


可以使用「focus」展現選中的文本區域處於動態中。也可以使用CSS樣式,例如,突出的邊框或者略有變化的背景色。


錯誤5:圖片中沒有alt圖片描述信息


你可能會覺得無關緊要,但是這是必要的!請記住添加一個說明性的alt屬性到你的圖片上,除非這張圖片很明顯是用作裝飾的,那麼這個alt屬性才可以為空(但仍然存在!)。如果是使用圖片作為鏈接點,那麼可以輸入鏈接地址。


錯誤6:背景圖片後面沒有設置背景色


在內容文字後面使用背景圖片是很普遍的,但是我們同時要考慮到如果背景圖片被客戶端所禁用的情況,所以最好背景圖後面再設置一個相似色調的背景顏色,以免文本變得不可閱讀。


錯誤7:不一致的界面設計


矯枉過正大概就是這個意思了。有些設計師為了提高網頁水平,故而為網站中的每個網頁都創建了不同的設計。但是這只會混淆用戶,使他們不知所措。記住,無論一個網站有多麼的優秀和有吸引力,如果它的整體外觀和感覺並不一致,那麼用戶就很難記住它。建議如下:


1、每個頁面使用標准一致的模板鏈接到網站的主要部分。


2、關鍵字要簡單。設計應該美觀簡潔,這樣用戶在使用時才不會困惑。


錯誤8:下劃線的內容並不是鏈接


眾所周知,帶有下劃線的內容很容易被當成鏈接。不要隨隨便便地在文字中來一個下劃線,這樣會讓人困惑。如果真的想強調某個單詞,不妨試試加粗或者加大字體。


最後總結


通過識別這些常見的錯誤,web開發人員可以避免很多讓其他人飽受煎熬的挫折。我們不僅需要承認錯誤,還應該清楚錯誤的影響,並採取措施避免錯誤,這樣才能有更好的開發表現——並有信心完成任務!


以上就是小編今天為大家分享的關於Web前端開發要學習的網頁優化技巧有哪些的文章,希望本篇文章能夠對正在從事web前端工作的小夥伴們有所幫助,想要了解更多web前端知識記得關注北大青鳥web培訓官網。最後祝願小夥伴們工作順利!


G. 2020年Web前端性能優化需要做哪些

今天小編要跟大家分享的文章是關於2020年Web前端性能優化需要做哪些?性能優化一直以來都是前端工程領域中的一個重要部分。很多資料表明,網站應用的性能優化對於提高用戶留存、轉化率等都有積極影響。可以理解為,提升你的網站性能,就是提升你的業務數據(甚至是業務收入)。

性能優化廣義上包含前端優化和後端優化。後端優化的關注點更多的時候是在增加資源利用率、降低資源成本以及提高穩定性上。相較於後端,前端的性能優化會更直接與用戶的體驗掛鉤。從用戶體驗側來說,前端服務
5s的載入時間優化縮減80%(1s)與後端服務50ms的響應優化縮減80%(10ms)
相比,用戶的體驗提升會更大。因此很多時候,與體驗相關的性能的瓶頸會出現在前端。下面就來和小編一起看一看吧!


一、html文檔結構標簽語義化


1、首先什麼是語義化呢?


語義化是指用合理HTML標記以及其特有的屬性去格式化文檔內容。機器在需要更少的人類干預的情況下能夠研究和收集信息,讓網頁能夠被機器理解,最終讓人類受益。即用正確的標簽做正確的事。


2、語義化的好處或者說存在的意義


①有利於搜索引擎抓取


②結構清晰的HTML在團隊合作中的作用:代碼可讀、便於維護、提高開發效率、快速達成共識、利於二次開發。


③有利於盲人屏幕閱讀器


二、css、js文件數量及大小


優化一般對於css、js是建議使用外聯式來進行導入。我們可以對css、js做相應的規劃也可以減少css、js的個數以減少http請求。同時也要注重減少重復代碼,注重代碼重復利用,以達到用最少的代碼干最多的事。同時當項目要投入上線使用的時候,可以對css、js文件進行壓縮,文件的減小可以加速文件的鏈接導入,以便加速網頁的載入渲染。


可通過使用Webpack,gulp等工具對Js文件進行合並。


三、圖片的數量和大小


多個伺服器請求會對站點的性能產生顯著的影響。對一張圖片進行導入又是一個http請求,因此我們應該減少圖片的導入數量以便減少http請求。此處,我們必須提到一個名詞「css精靈spirit」。css精靈是指包含多個不同的圖標、按鈕或圖形的單個圖像。因此我們可以把多張背景圖片合並為一張然後對背景圖片進行相應的定位。同時使用PNG8格式的圖片相對於GIF來說比較少。而對於內容圖片,可以對其進行適當的壓縮,可以加快文檔內容載入,或者如果是需要用戶下載的圖片,小的圖片可以加快用戶下載的速度。


使用較為廣泛的Web圖片格式有:JPEG/JPG、PNG、WEBP、Base64、SVG。


1.JPEG/JPG


特點是有損壓縮,體積小,載入快,不支持透明。


使用場景:JPG適合用於呈現熱菜豐富的圖片,在日常的開發中,JPG圖片經常作為大的背景圖、輪播圖或是Banner圖。比如兩大電商網站對大圖片的處理,就是對JPG圖片應用場景的最佳寫照。用JPG來呈現大圖片,既可以保留圖片的質量,又不會擔心圖片的體積,是一種比較廣泛使用的方案。


缺點:在處理一些矢量圖形和logo等這些線條感很強、顏色對比強烈的圖片時,認為壓縮就導致圖片模糊非常明顯。另外,JPG圖像不支持透明度處理,透明圖片只能用PNG來呈現了。


2.PNG-8和PNG-24


特點是無損壓縮、質量高、體積大、支持透明


優點:無損壓縮的高保真圖片格式。8和24都是二進制數的位數,8位的PNG支持256中顏色,24位的PNG可以支持1600萬種顏色。在不考慮文件大小隻在乎最佳的顯示效果時,推薦使用PNG-24。但是在適合使用PNG時會優先選擇PNG-8


應用場景:主要用PNG來呈現小的LOGO、顏色簡單對比強烈的圖片或是背景。


3.SVG


特點是文本文件,體積小,不失真,兼容性好


優點:SVG是一種基於XML語法的圖像格式。SVG對圖像的處理不是基於像素,而是基於對圖像的形狀描述。


和JPG、PNG相比較,SVG文件體積更小,可壓縮性更強。SVG作為矢量圖最大的優點在於圖片可以無限放大還不失真,一張SVG圖片可以適配多種解析度。另外SVG是文本文件,可以像寫代碼一樣定義SVG,放在HTML中稱為DOM的一部分。也可以把對圖像的描述寫入以.svg為後綴的文件中,在img標簽中引入即可。


4.WebP


優點:WebP是一款比JPG、PNG等在壓縮方面更加優越的圖片格式,同時也不會影響其圖片質量,使用該格式時最好將同名文件格式化,當檢測瀏覽器不兼容時自動切換jpg格式


缺點:是一個相對較新的技術,所以對於目前市面上的瀏覽器能否完美的兼容,其可用和實用性就變得很現實了,再好的東西如果沒有好的兼容性,也是非常難以普及和被廣泛使用的


5.Base64


優點:減少請求,加快首屏數據顯示。對於jpg格式的圖片,每一個圖片相當於一次http請求,圖片多了的話,伺服器耗性能比較嚴重。而將jpg轉化成base64格式的圖片,則極大地減少了請求數,因為Base是文本格式。


缺點:base64格式圖片比原圖大,佔用更多存儲空間,同時,瀏覽器不會對該資源緩存。


使用方法:background:url(data:image/png;base64,{img_data})


應用場景:一般對於小於10KB大小的圖片進行base64轉碼。


至於動態圖有GIF與APNG:後者APNG這東西是mozilla搞出來的,
它是24位的,而且也是動圖,可以容納1680萬種顏色,也是為了取代GIF,但是....也就火狐支持,IE10和chrome,safari全部不行,
如果說gif圖片是卡片機的話,APNG就是單反


四、有效性驗證


除了根據語義加標記之外,HTML文檔還需要用有效的代碼來編寫,如果代碼是無效的,瀏覽器會嘗試解釋標記本身,有時候會產生錯誤的結果。更糟的是,如果發送具有正確的MIME類型的XHTML文檔,理解XML的瀏覽器將不顯示無效的頁面。因為瀏覽器需要知道要使用什麼DTD(文檔類型定義)才能正確地處理頁面,所以對頁面進行有效性驗證要求有DOCTYPE聲明。


有效性驗證工具徑:



W3C驗證器(bookmarklet),這是一小段可以存儲在瀏覽器的書簽或收藏夾中的Javascript。單擊這個書簽就會觸發Javascript動作。


②可以訪問http://validator.w3.org/,通過輸入自己的URL來對自己的站點來進行在線驗證。


③使用firefox瀏覽器的可以下載插件FirefoxWebDeveloperExtension


五、雅虎的Web優化最佳實踐


1、內容優化


①盡量減少HTTP請求:常見方法包括合並多個CSS文件和JavaScript文件,利用CSSSprites整合圖像,Image
map(圖像中不同的區域設置不同的鏈接),內聯圖象(使用data:URLscheme在實際的頁面嵌入圖像數據)等。


②減少DNS查找,一般dns查找需要花費20-120ms,Windows的DNS緩存,可以通過ipconfig/displaydns
這個命令來查看。


③避免重定向


④使Ajax可緩存


⑤延遲載入組件:考慮哪些內容是頁面呈現時所必需首先載入的、哪些內容和結構可以稍後再載入,根據這個優先順序進行設定。



預載入組件:預載入是在瀏覽器空閑時請求將來可能會用到的頁面內容(如圖像、樣式表和腳本)。當用戶要訪問下一個頁面時,頁面中的內容大部分已經載入到緩存中了,因此可以大大改善訪問速度。


⑦減少DOM元素數量:頁面中存在大量DOM元素,會導致JavaScript遍歷DOM的效率變慢。


⑧根據域名劃分頁面內容:把頁面內容劃分成若幹部分可以使你最大限度地實現平行下載。但要確保你使用的域名數量在2個到4個之間(否則與第2條沖突)。


⑨最小化iframe的數量:iframes
提供了一個簡單的方式把一個網站的內容嵌入到另一個網站中。但其創建速度比其他包括JavaScript和CSS的DOM元素的創建慢了1-2個數量級。



避免404:HTTP請求時間消耗是很大的,因此使用HTTP請求來獲得一個沒有用處的響應(例如404沒有找到頁面)是完全沒有必要的,它只會降低用戶體驗而不會有一點好處。


2、伺服器優化


①使用內容分發網路(CDN):把你的網站內容分散到多個、處於不同地域位置的伺服器上可以加快下載速度。


添加Expires或Cache-Control信息頭:對於靜態內容,可設置文件頭過期時間Expires的值為「Never
expire(永不過期)」;對於動態內容,可使用恰當的Cache-Control文件頭來幫助瀏覽器進行有條件的請求。


②Gzip壓縮


③設置ETag:ETags(Entity
tags,實體標簽)是Web伺服器和瀏覽器用於判斷瀏覽器緩存中的內容和伺服器中的原始內容是否匹配的一種機制。



提前刷新緩沖區:當用戶請求一個頁面時,伺服器會花費200到500毫秒用於後台組織HTML文件。在這期間,瀏覽器會一直空閑等待數據返回。在PHP中,可以使用flush()方法,它允許你把已經編譯的好的部分HTML響應文件先發送給瀏覽器,這時瀏覽器就會可以下載文件中的內容(腳本等)而後台同⑤時處理剩餘的HTML頁面。



對Ajax請求使用GET方法:當使用XMLHttpRequest時,瀏覽器中的POST方法會首先發送文件頭,然後才發送數據。因此使用GET最為恰當。


⑦避免空的圖像src


3、Cookie優化


①減小cookie大小:去除不必要的coockie,並使coockie體積盡量小以減少對用戶響應的影響



針對Web組件使用域名無關的Cookie:對靜態組件的Cookie讀取是一種浪費,使用另一個無Cookie的域名來存放靜態組件是一個好方法,或者也可以在Cookie中只存放帶www的域名。


4、CSS優化


①將CSS代碼放在HTML頁面的頂部


②避免使用CSS表達式:CSS表達式在執行時候的運算量非常大,會對頁面性能產生大的影響


③使用來代替@import


④避免使用Filters:IE獨有屬性AlphaImageLoader用於修正IE
7以下版本中PNG圖片的半透明效果,但它的問題在於瀏覽器載入圖片時它會終止內容的呈現並且凍結瀏覽器。


5、JavaScript優化


①將JavaScript腳本放在頁面的底部



將JavaScript和CSS作為外部文件來引用:在實際應用中使用外部文件可以提高頁面速度,因為JavaScript和CSS文件都能在瀏覽器中產生緩存。


③縮小JavaScript和CSS


④刪除重復的腳本


⑤最小化DOM的訪問:使用JavaScript訪問DOM元素比較慢


⑥開發智能的事件處理程序


6、圖像優化


①優化圖片大小


②通過CSSSprites優化圖片


③不要在HTML中使用縮放圖片


④favicon.ico要小而且可緩存


7、針對移動優化


①保持組件大小在25KB以下:主要是因為iPhone不能緩存大於25K的文件(注意這里指的是解壓縮後的大小)。


②將組件打包成為一個復合文檔:把頁面內容打包成復合文本就如同帶有多附件的Email,它能夠使你在一個HTTP請求中獲取多個組件。


以上就是小編今天為大家分享的關於2020年Web前端性能優化需要做哪些的文章,希望本篇文章能夠對正在從事Web前端工作的小夥伴們有所幫助,想要了解更多Web前端知識記得關注北大青鳥Web培訓官網。最後祝願小夥伴們工作順利,成為一名優秀的Web前端工程師。


H. 怎麼優化前端代碼,讓百度高效識別移動頁面

優化前端代碼有一下幾點:
(1)CSS代碼簡寫。這里說的簡寫主要解決的問題是,網站代碼冗餘,去除不必要的空格等等。如果可以用一句表達的語言,就不要多出幾行代碼,符合W3C標准。
(2)同屬性提出
如果2個樣式帶有同樣的屬性,可以把同屬性單獨提出處理。例如A樣式和B樣式的字體顏色、大小、邊框都一樣,那麼就可以考慮提出。
(3)結構清晰優化
網站代碼清晰是指,把代碼分區處理:網站頭部、網站身體,網站底部,3個區域進行不同的布局。不同區間的代碼要區別總的選擇器,選擇不同顏色加以區分隔開處理。
代碼簡化,爬行的目錄層次淺,這樣加強了搜索引擎對代碼的友好程度,進而提高網站的權重,關鍵詞才會有良好的排名。如果代碼冗餘,煩瑣,搜索引擎也就關注的少了。

I. 如何進行Web前端優化

web前端優化要從幾個方面入手
1.考慮頁面的用戶體驗。用戶體驗包括界面的美觀性、頁面請求響應速度、資源消耗要盡量少(如腳本執行時cpu資源的消耗要盡可能的少)、界面是否友好,可交互性強不強等方面去優化。
2.前端代碼的可維護性。代碼的規范,組件的可重用性,注釋是否充分,盡量加強代碼的可讀性等方面去優化。

J. 提高Web前端性能的技巧有哪些

今天小編要跟大家分享的文章是關於提高web前端性能的技巧有哪些?當今數字世界,存在著無數的網站,每天都需要處理各種不同的原因的訪問。然而,這些網站中有很大一部分顯得笨重,使用起來也很麻煩。沒怎麼優化的網站會被各種各樣的問題困擾,包括載入時間、不支持移動設備、瀏覽器兼容性問題,等等。


這篇文章講述可以幫助改善優化前端的技術,非常有用。主要內容有清理代碼、壓縮圖片、壓縮外部資源、使用CDN,以及一些其它方法。這些方法會為你的網站帶顯著的速度提升和整體性能提升。下面來和小編一起看一看吧!


1.清理HTML文檔


HTML,即超文本標記語言,幾乎是所有網站的支柱。HTML為網頁帶來標題、子標題、列表和其它一些文檔結構的格式。在最近更新的HTML5中,甚至可以創建圖表。


HTML很容易被網路爬蟲識別,因此搜索引擎可以根據網站的內容在一定程度上實時更新。在寫HTML的時候,你應該嘗試讓它簡潔而有效。此外,在HTML文檔中引用外部資源的時候也需要遵循一些最佳實踐方法。


恰當放置CSS


Web設計者喜歡在網頁建立起主要的HTML骨架之後再來創建樣式表。這樣一來,網頁中的樣式表往往會放在HTML的後面,接近文檔結束的地方。然而推薦的做法是把CSS放在HTML的上面部分,文檔頭之內,這可以確保正常的渲染過程。

_飧霾唄圓荒芴岣咄鏡募釉廝俁齲換崛梅夢收叱な奔淇醋趴瞻灼聊換蛘呶薷袷降奈謀荊_OUT)等待。如果網頁大部分可見元素已經載入出來了,訪問者才更有可能等待載入整個頁面,從而帶來對前端的優化效果。這就是知覺性能。


正確放置Javascript


另一方面,如果將JavaScript放置在head標簽內或HTML文檔的上部,這會阻塞HTML和CSS元素的載入過程。這個錯誤會導致頁面載入時間增長,增加用戶等待時間,容易讓人感到不耐煩而放棄對網站的訪問。不過,您可以通過將JavaScript屬性置於_TML底部來避免此問題。
此外,在使用JavaScript時,人們通常喜歡用非同步腳本載入。這會阻止