整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          優化網頁速度的7種方法

          人人都是產品經理【起點學院】,BAT實戰派產品總監手把手系統帶你學產品、學運營。

          周末連續兩天給大家講了面向對象編程的主要特性「封裝」和「繼承」,如果你期待今天繼續講「多態」這個特性,可能你要失望了,今天并沒有「多態」,而是教你如何優化網頁加載速度,我就是這么不按規矩出牌,哈哈。

          周末在家宅著,刷了不少的網頁,發現很多網站都沒有優化它的加載速度,有時打開一個網頁要等待10來秒才能加載完成,雖然網頁內容很不錯,但是給我的第一印象就是慢,不能忍啊!

          其實有很多簡單粗暴,又很有療效的優化方法,我覺得有必要給各位產品經理分享一下,好讓你們去督催開發哥哥優化,改善一下網頁的加載體驗~

          首先,我們來看下網頁的加載流程。打開一個網頁,會先拉取一個html頁面,然后瀏覽器解析了這個html頁面后,會根據頁面的內容,去拉取javascript、css和圖片文件,最終根據這些文件,將頁面渲染出來。

          我們可以看到,影響一個網頁展示速度的主要因素不是網頁本身,而是它依賴的一些其它文件。如果優化了這些資源的加載速度,那么網頁展示的速度也就上去了。

          有哪些簡單粗暴的方法呢?讓我來一一列舉:

          1.優化圖片資源的格式和大小

          一個網頁中,圖片資源的大小占比是最多的,而且單個的文件的大小也很可觀。因此,在保證圖片質量不變的情況下,盡可能的使用高壓縮率的圖片格式,圖片格式可以按照這個優先級選擇webp > jpeg > png > bmp。同時也要根據圖片展示尺寸來拉取大小最為匹配的圖片資源,不要沒事就把原圖拉下來使用。以前我就遇到過這種情況,一個196*196大小區域展示的圖片,它的文件竟然達到了幾兆,最后才發現把1960*1960分辨率的原圖拉下來了。

          2.開啟網絡壓縮

          大部分瀏覽器在發出請求時,會帶上這個標記「Accept-Encoding: gzip, deflate」,表示這個瀏覽器可以接受以gzip壓縮方式傳輸數據,如果你的網頁服務器也支持gzip壓縮數據,那么數據以gzip方式傳輸時,會減少70~80%的流量。

          3.使用瀏覽器緩存

          同一個站點下面的不同頁面,往往都會復用一部分資源文件,如果把這些資源文件設置為可緩存的,那么在刷新或者跳轉到另一個頁面時,都無須再從網絡拉取相關資源,這樣就大大加快了網頁的加載速度。

          4.減少重定向請求

          有的網站對于不同的終端制作了不同的頁面,比如說在手機上訪問微博,會從weibo.com重定向至weibo.cn,每一次重定向都會導致瀏覽器重新發起請求,延長加載時間。對于這種情況,應該盡可能使用響應式設計,一個weibo.com站點覆蓋至所有終端。

          5.使用CDN存儲靜態資源

          CDN是一種靜態內容分發網絡,它在每個省,甚至每個城市都部署有自己的服務器,用于分發這些靜態內容,那么當某個城市的用戶要拉取某個資源時,他會首選從本地的CDN服務器上拉取,這樣可以保證他最快速的獲得該資源。據磚家統計,網絡資源中有70%的是靜態資源。這就意味著,有70%的內容產生后是不會變化,那么將它們全部放在CDN上面,可以提升這70%的資源的下載速度。

          6.減少DNS查詢次數

          很多人喜歡把不同的圖片掛在不同當域名下,比如說圖片A掛在a.pm-teacher.com,圖片B掛在b.pm-teacher.com。當一個網頁同時使用圖片A和圖片B時,瀏覽器需要查詢兩個域名,要知道,每次解析域名都是會浪費時間的,所以盡可能的將全部圖片放在一個域名下。

          7.壓縮css和js內容

          這里說的壓縮和第2點并不重復,上面提到的壓縮是不改變文件內容的壓縮。而css和js中有大量的空格和變量命名(如hello="hello word";),如果將這些空格去除,并用簡單的字母來代換變量名(如a="hello word";),那么這些css和js原文件的大小也會縮小,這樣也對加快拉取速度是有幫助的。

          不知道你有沒有看出來,上面提到的優化方案的核心就3點:減少請求數、減少資源大小、找最快的服務器。如果你是一個網站的產品經理,快去找你們的開發確認是否有做過類似的優化吧。

          #專欄作家#

          給產品經理講技術,微信公眾號(pm_teacher),人人都是產品經理專欄作家。資深程序猿,專注客戶端開發若干年,對前端、后臺技術略懂,熱衷于對新的科技領域的探索。

          ello,各位小伙伴,今天廣州藍景跟大家分享前端技術干貨,頁面加載速度問題。

          首先我們都討厭加載緩慢的頁面!

          要知道加載時間每增加1秒(0-5秒之間),網站轉化率就會平均下降4.42%。頁面加載時間的前五秒對轉化率的影響最大。


          幸運的是,我們可以通過優化HTML和CSS文件來提高網站的頁面加載速度,而無需花費昂貴的服務器資源!

          注:本文將僅關注如何使用HTML和CSS文件來提高頁面加載速度。

          延遲加載

          延遲加載是一種縮短關鍵渲染路徑長度的策略,從而減少頁面加載時間。

          a) 拆分CSS文件

          盡量拆分CSS文件,避免完整CSS在所有尺寸的屏幕上執行。

          <!-- 加載和解析整個sytles.css文件會阻塞主瀏覽器渲染 -->
          <link rel="stylesheet" href="styles.css" />

          對于打印媒體,可以使用:

          <!-- 加載和解析print.css時不會阻塞渲染,只會在打印模式加載該樣式 -->
          <link rel="stylesheet" href="print.css" media="print" />

          對于移動設備屏幕,可以使用:

          <!-- 只會在移動設備這樣的小屏幕下才會加載和解析該樣式 -->
          <link
          rel="stylesheet"
          href="mobile.css"
          media="screen and (max-width: 480px)" />

          對于平板電腦屏幕,可以使用:

          <!-- 不會在大屏幕上加載和解析該樣式 -->
          <link
          rel="stylesheet"
          href="tablet.css"
          media="screen and (max-width: 1080px)" />

          對于移動屏幕橫屏或豎屏,也可以使用不同的CSS文件:

          <!-- Loading and parsing portrait.css is not render-blocking on landscape screens -->
          <link href="portrait.css" rel="stylesheet" media="(orientation:portrait)" />

          通過將CSS分離成多個文件,主文件(在本例中為styles.css)變得小多了,從而減少了渲染被阻塞的時間,大大提高了頁面加載速度。

          b) CSS的font-display屬性

          font-display屬性應用于@font-face規則,定義瀏覽器如何加載和顯示字體文件,從而允許在字體加載或加載失敗時以回退字體顯示文本。這可以通過使文本可見取代空白屏幕來提高性能,但代價是閃爍無樣式的文本。

          @font-face {
          font-family: "nunito", sans-serif;
          font-weight: 400;
          font-style: normal;
          font-display: fallback;
          }

          c) HTML文件中的圖片懶加載

          使用loading="lazy",以便僅在需要時加載圖像。這將大大降低頁面加載速度。

          <img src="my-logo.png" alt="KOUSTAV" loading="lazy" />

          2. 選擇正確的圖片格式

          .webp格式的圖片被推薦作為網絡的圖片格式標準。

          WebP無損圖片在尺寸方面比PNG小26%。WebP有損圖片比同等SSIM質量指數下的同類JPEG圖片小25-34%。動畫WebP圖片支持有損、無損和透明,與GIF和APNG相比,可以提供更小的尺寸。

          下圖是WebP與PNG圖片格式對比:

          下圖是WebP與JPEG圖片格式對比:

          所有這些測試都可以證明,即使是有損壓縮,webp圖片的壓縮率也更高,因此大大減少了頁面加載時間!

          你還可以嘗試另一種圖片格式.avif,在少數情況下比.webp更好,但由于該格式比較新(2019年發布),因此還沒有多少瀏覽器支持.avif格式!

          使用<picture>元素

          a) 可用于針對不同的media條件裁剪或修改圖片(例如,在較小的顯示器上加載大圖片的縮略版本)。

          b)在不支持webp格式的情況下提供替代圖片格式。

          c)通過為查看器加載最合適的圖片來節省帶寬并加快頁面加載時間。

          如果為高DPI顯示器提供更高分辨率的圖像版本,請改用<img>元素上的srcset。這允許瀏覽器在數據保存模式下選擇低分辨率版本,并且你不必編寫顯式media條件。

          <picture>
          <source srcset="my-logo-wide.webp" type="image/webp" media="(min-width: 600px)" />
          <source srcset="my-logo-wide.jpeg" type="image/jpeg" type="image/jpeg" media="(min-width: 600px)" />
          <source srcset="my-logo-narrow.webp" type="image/webp" />
          <img src="my-logo-narrow.png" alt="KOUSTAV" loading="lazy" />
          </picture>

          3. 渲染圖像

          由于圖像是異步加載的,并在第一次繪制后繼續加載,如果在加載之前未定義其尺寸,則可能會導致重排到頁面內容。例如,文本因加載圖像而被推下頁面。因此,設置width和高height屬性至關重要,以便瀏覽器可以在布局中為它們保留空間。

          對于任何background-image,設置background-color值很重要,以便在下載圖像之前,覆蓋的內容保持可讀。

          4. 壓縮HTML和CSS文件

          壓縮指的是從代碼中刪除所有不必要的字符以減小尺寸。刪除的是不需要的空格字符,如空格、換行符、制表符等以及注釋。

          使用壓縮工具,如CodeBeautify,CSS Minifier等來縮小HTML和CSS文件。有助于為網站提供更快的頁面加載速度。


          在響應式布局逐漸成為主流的今天,網頁或者app的流式布局已經不算是一個新鮮的詞匯了。今天我要講的一個內容也是跟頁面流式布局有關,如何讓你的網頁實現完美的縮放?

          網頁布局

          我們可以很快速的寫出一個響應式布局的頁面,首先看一下效果圖。

          網頁布局

          其中html部分的代碼如下:

          html部分代碼

          css中的item代碼為:

          css代碼

          通過以上代碼,完成上述的流式布局后,在我們改變瀏覽器窗口大小時,div也會隨之進行縮放。

          問題

          But,你以為這就是我們想要的結果嗎?

          當然不是!在改變瀏覽器窗口大小時,我們發現雖然div的寬度是進行了縮放,但是高度卻沒變,因此div的寬高比并未保持原始比例,我們可以看下以下的效果。

          縮放后寬高比

          從上圖中可以很容易看出,縮放后的div寬高比比之前小很多,這并不是我們想要的結果。

          我們需要達到的效果是在改變瀏覽器窗口大小時,div也會隨之進行等比例的縮放。

          實現辦法

          首先,可以使用Javascript代碼去實現,這是沒有問題的。但是綁定Javascript的onresize事件,在拖拽時可能會出卡頓現象,體驗不是很好。

          接下來我們通過CSS來實現以上的效果。

          使用的核心屬性是我們平時并不太注意的padding-bottom。

          padding-bottom有一個很容易讓人忽略的特性是,當取值為百分比形式時,其百分比的基數是父元素的寬度,而不是高度。

          因此我們可以在不用給父元素設置高度的時候,就可以通過padding-bottom屬性確定當前元素的高度。我們的做法如下。

          1. 將元素的height屬性設為0,通過padding-bottom屬性確定元素高度。

          2. 設置合理的padding-bottom值,例如上述的例子中,在寬度為21%時,如果需要高度是寬度的1.62倍,我們可以將padding-bottom取值為34%

          修改后的CSS代碼如下。

          修改后的CSS

          修改后,我們再次調整瀏覽器窗口的大小,就會發現div是等比例的進行縮放,完美達到了我們的要求。

          修改后等比例縮放

          疑問

          在這里,可能會有人有疑問如果設置overflow:hidden;那么里面的文字會不會因為超過height,就會被隱藏了?

          答案是不會的,根據CSS2.1的規范,overflow只會對處于padding外面的內容生效,即只有超出了 padding區域的內容才會被overflow屬性隱藏掉。而在設置padding-bottom后,實際已經決定了元素的height屬性,因此overflow:hidden;不會生效。

          總結

          今天這篇文章主要講解了利用CSS完成頁面等比例縮放的最簡單方式,你學會了嗎?


          主站蜘蛛池模板: 性色AV一区二区三区| 国产午夜毛片一区二区三区 | 国产福利一区二区三区在线视频| 久久久久人妻一区二区三区| a级午夜毛片免费一区二区| 无码8090精品久久一区| 亚洲色精品VR一区区三区| 久久婷婷色一区二区三区| 精品亚洲一区二区| 国产一区二区内射最近更新| 国产精品主播一区二区| 插我一区二区在线观看| 精品一区二区91| 国产婷婷一区二区三区| 久久精品国产亚洲一区二区三区| 日韩经典精品无码一区| 亚洲AV无码一区二三区| 中文字幕精品无码一区二区| 国产激情无码一区二区| 日韩精品在线一区二区| 国产伦精品一区二区三区女| 麻豆AV天堂一区二区香蕉| 国产精品日韩欧美一区二区三区| 亚洲av日韩综合一区二区三区| 无码一区二区三区AV免费| 精品国产精品久久一区免费式| 国产一区二区三区在线电影| 精品视频在线观看你懂的一区| 国产综合一区二区| 亚洲一区二区三区不卡在线播放| 亚洲国产AV无码一区二区三区| 精品一区二区三区3d动漫| 熟妇人妻一区二区三区四区| 精品福利一区二区三区免费视频| 无码少妇一区二区浪潮免费| 精品人妻少妇一区二区三区| 久久久国产精品亚洲一区| 狠狠综合久久av一区二区 | 日韩av无码一区二区三区| 国产成人精品日本亚洲专一区| 日韩一区二区三区电影在线观看|