本文目錄一覽:
- 1、如何提高頁面加載速度
- 2、如何解決CSS JS和圖片對網站加載速度的影響
- 3、js怎麼通過css美化
- 4、css與js的性能優化有哪些
- 5、前端性能優化總結(一)-js、css優化
- 6、頁面加載js css很慢 怎麼優化
如何提高頁面加載速度
如何提高頁面加載速度
網站最重要的一個核心就是用戶體驗,網站的打開速度影響着訪客的瀏覽體驗,提高網站頁面的加載速度的方法其實有很多,下面我主要從下面四個角度進行討論,分享常用的提高網頁加載速度的技巧:
一、網頁壓縮技術
對於網頁壓縮而言,相信各位站長都比較熟悉,主要是啟用服務器Gzip,對頁面Gzip壓縮,減少元素的’體積,從而減少數據的傳輸,進而提高網頁的加載速度。
二、CSS優化
(1)css位置
CSS說明如果出現在後,頁面需要重新渲染,打開速度受到影響。所有css定義代碼的位置要放到網站之前。
(2)css sprite技
網站上的一些圖片可以採用css sprite技術進行合併,減少加載請求次數,從而提高網頁的加載速
(3)css代碼優化
通過對css代碼屬性的簡寫、移除多餘的結構(fr ameworks)和重設(resets)等一系列的方法和技巧來簡化css代碼,減小css文件的大小。
三、緩存靜態資源
通過設置瀏覽器緩存,將css、js等不太經常更新的文件緩存在瀏覽器端,這樣同一訪客再次訪問你的網站的時候,瀏覽器就可以從瀏覽器的緩存中獲取css、js等,而不必每次都從你的服務器讀取,這樣在一定程度上加快了網站的打開速度,又可以節約你的服務器流量。
四、JS優化
(1)JS位置
網頁代碼中對js進行優化的時候,建議將JS放在頁面最後,這樣可以加快頁面打開速度。
(2)合併JS
合併相同域名下的js,通過減少網絡連接次數從而提高網頁的打開速度。
(3)LazyLoad(延遲加載)技術
Lazy Load是一個用ja vasc ript 編寫的 jQuery 插件,它可以延遲加載長頁面中的圖片。在瀏覽器可視區域外的圖片不會被載入,直到用戶將頁面滾動到它們所在的位置。例如本人的破折君博客就採用這個圖片延遲加載功能。
;
如何解決CSS JS和圖片對網站加載速度的影響
可以分以下幾點來處理
1、CSS及JS拋開邏輯上的優化,可以將多個CSS、JS合併到一起。並且壓縮一下大小。
2、圖片及js等附件單獨的域名(一般都是用二級域名).
3、圖片做懶加載處理
4、如果網站的js特別多(一般大型網站中用到),最好是模塊化,按需求加載(可用seajs或requirejs)
5、從服務端出發,優化圖片的讀取速度。(比如現成的平台,七牛,又拍雲等等)
js怎麼通過css美化
通常來說js無法通過css美化的,js偏向於邏輯算法、動態交互類的。css的美化功能主要是針對html的,與js有也是間接的關聯,比如通過js給html標籤動態添加一些css樣式,或者給html標籤動態添加具有css樣式的類名等。
css與js的性能優化有哪些
1是js外部加載
2是代碼的寫法了。同樣效果,你的代碼很多,就影響速度和加載,。
前端性能優化總結(一)-js、css優化
移動互聯網時代,用戶對於網頁的打開速度要求越來越高。首屏作為直面用戶的第一屏,其重要性不言而喻。優化用戶體驗更是我們前端開發非常需要 focus 的東西之一。
從用戶的角度而言,當打開一個網頁,往往關心的是從輸入完網頁地址後到最後展現完整頁面這個過程需要的時間,這個時間越短,用戶體驗越好。所以作為網頁的開發者,就從輸入url到頁面渲染呈現這個過程中去提升網頁的性能。
所以輸入URL後發生了什麼呢?在瀏覽器中輸入url會經歷域名解析、建立TCP連接、發送http請求、資源解析等步驟。
http緩存優化是網頁性能優化的重要一環,這一部分我會在後續筆記中做一個詳細總結,所以本文暫不多做詳細整理。本文主要從網頁渲染過程、網頁交互以及Vue應用優化三個角度對性能優化做一個小結。
首先談談拿到服務端資源後瀏覽器渲染的流程:
關鍵渲染路徑是瀏覽器將 HTML、CSS、JavaScript 轉換為在屏幕上呈現的像素內容所經歷的一系列步驟。也就是我們剛剛提到的的的瀏覽器渲染流程。
為儘快完成首次渲染,我們需要最大限度減小以下三種可變因素:
首先,DOM 和 CSSOM 通常是並行構建的,所以 CSS 加載不會阻塞 DOM 的解析。
然而,由於 Render Tree 是依賴於 DOM Tree 和 CSSOM Tree 的,
所以他必須等待到 CSSOM Tree 構建完成,也就是 CSS 資源加載完成(或者 CSS 資源加載失敗)後,才能開始渲染。因此,CSS 加載會阻塞 Dom 的渲染。
由此可見,對於 CSSOM 縮小、壓縮以及緩存同樣重要,我們可以從這方面考慮去優化。
當瀏覽器遇到 script 標記時,會阻止解析器繼續操作,直到 CSSOM 構建完畢,JavaScript 才會運行並繼續完成 DOM 構建過程。
當頁面中元素樣式的改變並不影響它在文檔流中的位置時(例如:color、background-color、visibility 等),瀏覽器會將新樣式賦予給元素並重新繪製它,這個過程稱為重繪。
迴流(Reflow)
當 Render Tree 中部分或全部元素的尺寸、結構、或某些屬性發生改變時,瀏覽器重新渲染部分或全部文檔的過程稱為迴流。
有時即使僅僅迴流一個單一的元素,它的父元素以及任何跟隨它的元素也會產生迴流。現代瀏覽器會對頻繁的迴流或重繪操作進行優化:瀏覽器會維護一個隊列,把所有引起迴流和重繪的操作放入隊列中,如果隊列中的任務數量或者時間間隔達到一個閾值的,瀏覽器就會將隊列清空,進行一次批處理,這樣可以把多次迴流和重繪變成一次。
當你訪問以下屬性或方法時,瀏覽器會立刻清空隊列:
因為隊列中可能會有影響到這些屬性或方法返回值的操作,即使你希望獲取的信息與隊列中操作引發的改變無關,瀏覽器也會強行清空隊列,確保你拿到的值是最精確的。
避免頻繁操作樣式,最好一次性重寫 style 屬性,或者將樣式列表定義為 class 並一次性更改 class 屬性。
避免頻繁操作 DOM,創建一個 documentFragment,在它上面應用所有 DOM 操作,最後再把它添加到文檔中。
也可以先為元素設置 display: none,操作結束後再把它顯示出來。因為在 display 屬性為 none 的元素上進行的 DOM 操作不會引發迴流和重繪。
避免頻繁讀取會引發迴流/重繪的屬性,如果確實需要多次使用,就用一個變量緩存起來。
對具有複雜動畫的元素使用絕對定位,使它脫離文檔流,否則會引起父元素及後續元素頻繁迴流。
圖片懶加載在一些圖片密集型的網站中運用比較多,通過圖片懶加載可以讓一些不可視的圖片不去加載,避免一次性加載過多的圖片導致請求阻塞(瀏覽器一般對同一域名下的並發請求的連接數有限制),這樣就可以提高網站的加載速度,提高用戶體驗。
將頁面中的img標籤src指向一張小圖片或者src為空,然後定義data-src(這個屬性可以自定義命名,我才用data-src)屬性指向真實的圖片。src指向一張默認的圖片,否則當src為空時也會向服務器發送一次請求。可以指向loading的地址。注意,圖片要指定寬高。
當載入頁面時,先把可視區域內的img標籤的data-src屬性值負給src,然後監聽滾動事件,把用戶即將看到的圖片加載。這樣便實現了懶加載。
事件委託其實就是利用JS事件冒泡機制把原本需要綁定在子元素的響應事件(click、keydown……)委託給父元素,讓父元素擔當事件監聽的職務。事件代理的原理是DOM元素的事件冒泡。
優點:
例如有一個列表需要綁定點擊事件,每一個列表項的點擊都需要返回不同的結果。
傳統寫法:
傳統方法會利用for循環遍歷列表為每一個列表元素綁定點擊事件,當列表中元素數量非常龐大時,需要綁定大量的點擊事件,這種方式就會產生性能問題。這種情況下利用事件委託就能很好的解決這個問題。
改用事件委託:
輸入搜索時,可以用防抖debounce等優化方式,減少http請求;
這裡以滾動條事件舉例:防抖函數 onscroll 結束時觸發一次,延遲執行
節流函數:只允許一個函數在N秒內執行一次。滾動條調用接口時,可以用節流throttle等優化方式,減少http請求;
下面還是一個簡單的滾動條事件節流函數:節流函數 onscroll 時,每隔一段時間觸發一次,像水滴一樣
參考鏈接:
頁面加載js css很慢 怎麼優化
用成熟得JS框架
將js文件放在頁面底部
gzip壓縮
js文件合併
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/297940.html