整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          優(yōu)化網(wǎng)站訪問速度的方法

          優(yōu)化網(wǎng)站訪問速度的方法

          信搭建網(wǎng)站的用戶都是看重網(wǎng)站速度,希望搭建的網(wǎng)站訪問速度良好,這樣才能保障網(wǎng)站業(yè)務的運行,所以今天小編就來介紹一下,優(yōu)化網(wǎng)站訪問速度的方法。

            用戶想要優(yōu)化網(wǎng)站訪問速度,或者說網(wǎng)站訪問速度出現(xiàn)問題,可以先檢測下網(wǎng)站速度。網(wǎng)站速度可以使用IIS7網(wǎng)站監(jiān)控,先進行檢測,查看搭建的網(wǎng)站是否被劫持、網(wǎng)站域名是否被墻、DNS污染檢測、網(wǎng)站打開速度檢測等信息


            如果正常情況下,那么可以通過以下幾種方法來優(yōu)化網(wǎng)頁用戶的訪問速度:

            1、進行網(wǎng)站代碼優(yōu)化,刪除冗余的代碼,比如無用的空格、換行符、注釋,不需要加載的JS等,將JS代碼和CSS樣式合并,減少請求次數(shù),可以有效提高網(wǎng)頁加載速度。

            2、減少頁面上不必要的元素,瀏覽網(wǎng)頁實際上是將主機上的內(nèi)容下載到本地硬盤,再使用瀏覽器查看,所以說網(wǎng)頁本身所占空間越小,網(wǎng)頁瀏覽速度就越快。盡量不要使用flash動畫、大量的圖片或多媒體資源,如視頻、音頻等。

            3、盡量使用靜態(tài)頁面,靜態(tài)頁面可以直接運行在客戶端,無需主機編輯便可以直接在瀏覽器上顯示,在訪問速度上比較快。而動態(tài)頁面雖然交互性好,但這類程序需要由服務器執(zhí)行處理,生成HTML頁面,然后通過瀏覽器瀏覽,網(wǎng)頁顯示速度較慢。

            4、簡化頁面結構,在設計網(wǎng)頁時,不少站長為了追求頁面的對齊,將整個頁面內(nèi)容塞進一個Table中,然后由單元格劃分各個區(qū)塊,這會讓網(wǎng)頁顯示速度變慢。因為Table需要等所有的內(nèi)容加載好再分級顯示,如果某些內(nèi)容難以加載出來,整個頁面也就無法顯示出來。正確的做法應該使用DIV+CSS的頁面結構,它可以實現(xiàn)頁面的逐步加載。

            5、使用CDN加速網(wǎng)絡,CDN即內(nèi)容分發(fā)網(wǎng)絡,它可以實時的根據(jù)網(wǎng)絡流量和各節(jié)點的鏈接、負載狀況以及用戶的距離和響應時間等信息將用戶的請求重新導向到離用戶最近的服務節(jié)點。這能讓用戶就近取得所需內(nèi)容,提高網(wǎng)頁響應速度。

            6、大圖使用懶加載Lazy Load,圖片懶加載又稱圖片延時加載、惰性加載,即在用戶需要使用圖片的時候加載,這樣可以減少請求、減輕服務器壓力,提高頁面加載速度。

            7、如果是大量圖片的網(wǎng)站,那么可以對網(wǎng)站的圖片進行壓縮之后,再使用到網(wǎng)頁上面,避免因為圖片占用太多緩存而導致網(wǎng)頁訪問緩慢。

            以上就是優(yōu)化網(wǎng)站訪問速度的方法,希望能幫助到有需要的用戶。

          家好,我是 Echa。

          今天來分享 12 個優(yōu)化 CSS 代碼小技巧!

          1. 避免高消耗屬性

          分析表明,一些CSS屬性的渲染速度比其他屬性慢,因此應該謹慎使用。包括以下屬性:

          • box-shadow
          • border-radius
          • position: fixed
          • transform
          • :nth-child
          • filter

          上述屬性都是對性能要求比較高的。如果這些屬性使用較少,那這就不是問題。但是如果一個頁面出現(xiàn)幾百次,那么整體的CSS可能會受到影響,所以要謹慎使用。

          2. 使用 <link> 代替 @import

          @import 規(guī)則主要用于導入資源或者CSS文件。它會阻止其他文件并行下載,并可能會導致網(wǎng)站速度變慢。

          ? 不要在CSS中這樣操作:

          @import url("header.css");
          @import url("slider.css");
          @import url("content.css");
          @import url("footer.css");
          

          可以使用多個HTML 中的<link>標簽來代替@import,它將并行加載CSS文件,可以在一定程度上提高應用的加載的速度。

          ? 可以在HTML這樣操作:

          <link rel="stylesheet" href="header.css">
          <link rel="stylesheet" href="slider.css">
          <link rel="stylesheet" href="content.css">
          <link rel="stylesheet" href="footer.css">
          

          3. 簡化選擇器

          我們知道,有很多方法可以對 HTML 元素進行樣式設置,而最復雜的 CSS 選擇器可能需要幾毫秒的時間來解析。降低選擇器的復雜性就可以減少瀏覽器的負載并保持代碼簡潔明了。

          ? 避免這么寫:

          .container > div.links-container ul li .link {
          
          }
          

          ? 可以這么寫:

          .container .link {
          
          }
          

          4. 避免使用 !Important

          在一些時候,可以使用!Important 來提高樣式的優(yōu)先級,以使樣式生效。除非沒有別的辦法,否則不要使用!Important。

          添加 !Important CSS聲明將覆蓋掉其他對應的樣式聲明,如果CSS的規(guī)則中 !Important 太多,瀏覽器就必須對代碼進行額外的檢查,這可能會降低頁面的加載速度。所以,盡量避免使用!Important。在很多情況下我們是可以通過選擇器來實現(xiàn)樣式重寫的,除非是想要對第三方庫的CSS進行重寫。

          5. CSS實現(xiàn)特效和SVG代替圖片

          頁面中加載圖像很可能需要很長的時間,尤其是在圖像未針對web進行優(yōu)化的情況下。在實現(xiàn)背景圖、漸變、幾何圖形時,盡量少使用圖片,而是使用CSS代碼實現(xiàn)。使用 CSS 代碼實現(xiàn)就會比圖片加載速度更快。

          還可以使用SVG來代替PNG或者JPG圖片:

          • 可以給圖片添加效果;
          • 圖像加載速度更快;
          • 圖像自動適應用戶屏幕。

          6. 壓縮 CSS

          我們可以通過壓縮CSS文件來刪除文件中所有的空白和不必要的代碼來減少文件的大小。CSS文件變小了,加載的時間自然就變少了,頁面的加載速度就會變。

          7. 使用0而不是0px

          當一個屬性的值為0時,我們可以不添加任何單位。即不要這么寫:0rem,0em,0px等。

          當然,這么寫是沒有錯的,但是這些單位是沒有用的,當處理一個巨大的CSS文件時,沒有單位會比有單位時文件小一點。

          8. 使用十六進制而不是顏色名稱

          當我們將顏色設置為顏色名稱時,瀏覽器就會花費更多時間來找出顏色的十六進制值。假如想使用紅色,那設置為color:red之后,不同的瀏覽器顯示效果可能是不一樣的,作為開發(fā)人員,我們不能讓瀏覽器來決定網(wǎng)頁將如何顯示。

          因此,盡量使用使用十六進制(例如紅色#ff0000)來定義顏色,就能確保在所有瀏覽器中以相同的色調(diào)準確得顯示想要的顏色。

          9. 避免過多 font-family

          為每個選擇器去定義字體并不是一個好的辦法,它會導致代碼很難維護,假如以后想要更改字體,就不得不在每個選擇器中更改它。

          因此不要像下面這樣來定義字體:

          h1 {
            font-family: Arial, Helvetica, sans-serif;
          }
          
          p {
            font-family: Arial, Helvetica, sans-serif;
          }
          
          .selection {
            font-family: Arial, Helvetica, sans-serif;
          }
          
          .footer {
            font-family: "Times New Roman", Times, serif;
          }
          

          可以在正文中定義要使用的字體,如果想要在其他選擇器中覆蓋該字體,就可以通過在該選擇器中使用所需的字體來實現(xiàn):

          body{
            font-family: Arial, Helvetica, sans-serif;
          }
          
          footer{
            font-family: "Times New Roman", Times, serif";
          }
          

          如果頁面中很多部分的字體都不盡相同,就可以將字體定義在 class 中,然后在需要的HTML標簽上使用該class即可:

          .font-helvetica {
            font-family: Arial, Helvetica, sans-serif;
          }
          
          .font-times {
            font-family: "Times New Roman", Times, serif";
          }
          

          10. 使用備用字體

          有些情況下,應用中使用的字體可能在用戶設備上不可用。在這種情況下,可以指定使用其他備用字體:

          p{
            font-family: 'Open Sans', Arial, Helvetica, sans-serif;
          }
          

          這樣,瀏覽器就會按順序進行解析,直到解析到第一個可用的字體,如果都不可用,就會使用瀏覽器的默認字體。

          11. 使用 CSS 重置

          每個瀏覽器都有自己的 HTML 元素默認樣式。假如有一個沒有任何樣式的 H1 元素,那么在默認情況下,在Firefox中,會給它一個上下為21.433px,左右為 0 的margin值。而在Safari中,會給它一個上下為21px,左右為 0 的margin值。

          因此,重置CSS樣式,一個很好的做法就是從頭開始定義樣式。很多開發(fā)人員會使用通用選擇器(*)來執(zhí)行基本重置:

          * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
          }
          

          在使用通用選擇器 (*) 進行重置有時會導致性能問題,因為它會針對每個標簽去設置其樣式。

          可以使用一些常用的CSS重置代碼庫,比如normalize。也可以參考一些CSS重置的最佳實踐。

          12. 減少重復代碼

          當兩個元素或選擇器具有相同的 CSS 屬性時,可以使用逗號來組合這些選擇器,而不是重復聲明樣式,這樣它們將共享 CSS 樣式。

          ? 避免這樣寫:

          .header {
            background-color: #fefefe;
            padding: 20px 0;
          }
          
          .footer {
            background-color: #fefefe;
            padding: 20px 0;
          }
          

          ? 建議這樣寫:

          、首先說說瀏覽器的加載流程:

          (1) 用戶在地址欄中打開一個URL,瀏覽器首先會尋找該URL所在服務器,通過DNS服務器查詢?yōu)g覽器會獲

          得該URL所在網(wǎng)站的IP地址,然后向該地址發(fā)起請求,連接到服務器;


          (2) 建立連接后,向服務器發(fā)送http請求,請求對應的HTML文檔;

          (3) 解析HTML文檔,目的是知道該頁面需要哪些資源以及生成DOM樹;生成DOM樹和獲取到相應需要的


          資源文件同時進行;解析HTML文檔時,一旦發(fā)現(xiàn)一個標簽,就會根據(jù)標簽的要求分配對指定的資源進行下載,當DOM樹生成后,DOMContentLoaded事件被觸發(fā);

          理論上瀏覽器并行下載頁面所需要的資源會帶來更好的性能體驗!

          (4) Onload事件,當解析完成后,生成了DOM樹,所有頁面需要的資源文件都已經(jīng)成功下載和執(zhí)行后,


          瀏覽器會發(fā)出Onload事件并回調(diào)HTML文檔中的onload函數(shù)。

          2、對于優(yōu)化頁面速度的必要性:

          頁面的打開速度對于網(wǎng)站的優(yōu)化有極大的意義,如果打開一個頁面長時間處于白屏狀態(tài),如果超過5s,暴脾氣

          的我是會直接關閉這個網(wǎng)頁;或者是頁面加載出來了,但是比較慢,頁面顯示不完整,標簽一直在轉圈,頁面處于不可交互狀態(tài),這也是一種很不好的體驗;


          一個頁面的打開速度快不快,可以用兩個指標來描述,一個是ready時間,一個是load時間,chrome控制臺可以看到;

          一共是加載了19.2KB,ready時間是133ms,load時間是147ms;

          3、分點介紹優(yōu)化策略:

          (1) 避免head標簽js堵塞:

          所有放在head標簽里面的js和css都會堵塞渲染;如果這些css和js需要加載很久的話,那么頁面就空白了;


          [html] view plain copy

          <head>

          <title>test</title>

          <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

          </head>

          用google的cdn加載一個jQuery文件是訪問不了的,所以標簽一直在轉圈,頁面沒有任何顯示;


          有兩種解決辦法,第一種是把script放到body后面,這也是很多網(wǎng)站采取的方法。第二種是給script加defer或者async的屬性,一旦script是defer或者async延遲的,那么這個script將會異步加載,但不會馬上執(zhí)行,會在readystatechange變?yōu)镮nteractive后按順序依次執(zhí)行;

          兩者相同點:

          加載文件時不阻塞頁面渲染

          對于inline的script無效

          使用這兩個屬性的腳本中不能調(diào)用document.write方法

          有腳本的onload的事件回調(diào)


          兩者不同點:

          async下,js一旦下載好了就會執(zhí)行,所以很有可能不是按照原本的順序來執(zhí)行的。如果js前后有依賴性,用async,就很有可能出錯。

          如果一個script加了defer屬性,即使放在head里面,它也會在html頁面解析完畢之后再去執(zhí)行,也就是類似于把這個script放在了頁面底部。

          (2) 減少head里面的css資源:


          css必須放在head標簽里面,如果放在body里面會造成對layout好的dom進行重排造成頁面閃爍;但是一旦

          放在head標簽里面又會堵塞頁面渲染;所以要盡可能的減小css體積;

          例:不要放太多base64在css里面,webpack構建工具常常會配置圖片體積小于多少的直接轉換成base64加載,這

          里是挺影響性能的,一個是不能用到緩存機制,另一個就是加大了css的體積;個人建議上線項目直接把圖片用cdn托

          管;

          在這里給大家推薦一個前端交流學習qun,想要學習的朋友可以加入進來,免費帶你入門。前面是554,中間是224,后面是926.

          (3)延遲加載圖片:

          對于很多網(wǎng)站來說,圖片汪汪是占用最多流量和帶寬的資源;

          [html] view plain copy

          <span style="font-size:18px;"><body>

          <img id="imgTest" src="about:blank" data-src="1.gif" />

          </body>

          <script type="text/javascript">

          window.onload=function(){

          $("#imgTest").attr("src",$("#imgTest").data("src"));

          }

          </script></span>

          這里沒有直接給src路徑,而是在頁面加載完成后用js操作src,減少了頁面加載圖片的時間,首先把整個頁面結構呈現(xiàn)給用戶;惰性加載圖片也是差不多;當用戶滑動頁面到一定高度時(監(jiān)聽scroll事件),再動態(tài)的依次對圖片進行處理;

          (4) 壓縮和緩存:


          壓縮就不說了;緩存會在后續(xù)文章中具體寫一個demo,持續(xù)更新;

          (5) DNS解析優(yōu)化:

          DNS查詢需要花費大量時間來返回一個主機名的IP地址;

          在我們的網(wǎng)站中,可能會加載到很多個域的東西,比如引入了百度地圖啊之類的sdk和一些自己的子域名服務;第一次打開網(wǎng)站時要做很多次DNS查找;DNS預讀取能夠加快網(wǎng)頁打開時間;

          [html] view plain copy

          <link rel="dns-prefection" >

          在head中寫上幾個link標簽,對標簽中的地址提前解析DNS,這個解析是并行發(fā)生的,不會堵塞頁面渲染;

          還有非常多的頁面優(yōu)化技巧,html別嵌套太多層,加重頁面layout的壓力;css選擇器的合理運用,減少匹配的計算量;js中別濫用閉包,會加深作用域鏈,增加變量查找時間;減少http請求之類的等等;


          我是一名前端開發(fā)程序員,自己整理了一份2019最全面前端學習資料,從最基礎的HTML+CSS+JS到移動端HTML5到各種框架都有整理,送給每一位前端小伙伴,這里是小白聚集地,歡迎初學和進階中的小伙伴

          前端資料獲取方式:

          1.在你手機的右上角有【關注】選項,點擊關注!

          2.關注后,手機客戶端點擊我的主頁面,右上角有私信,請私信回復:【學習】

          電腦已經(jīng)設置好了關鍵詞自動回復,所以回復的時候請注意關鍵詞喲~


          主站蜘蛛池模板: 国产一区二区三区播放| 日本一区精品久久久久影院| 夜夜精品无码一区二区三区| 国产一区二区三区在线看片 | 亚洲夜夜欢A∨一区二区三区| 国产精品日本一区二区不卡视频| 无码精品人妻一区二区三区人妻斩| 亚洲一区在线视频| 精品国产精品久久一区免费式| 免费人妻精品一区二区三区| 激情综合一区二区三区| 亚洲一区二区三区四区视频| 精品视频一区在线观看| 亚洲av无码一区二区乱子伦as| 日韩最新视频一区二区三| 一区二区国产在线播放| 精品人妻中文av一区二区三区| 精品无码国产AV一区二区三区| 国产成人无码AV一区二区| 亚洲午夜精品一区二区麻豆| 亚洲福利视频一区二区| 精品无码日韩一区二区三区不卡| 国产视频一区二区在线观看| 久久国产精品一区免费下载 | 国产成人高清亚洲一区91| 亚洲一区二区三区香蕉| 日韩在线视频一区二区三区 | 蜜桃传媒视频麻豆第一区| 日韩精品一区二区三区在线观看l| 日韩精品无码一区二区三区AV| 一区二区无码免费视频网站| 国产一区二区在线观看app| 亚洲AV日韩AV一区二区三曲| 曰韩精品无码一区二区三区| 日韩精品一区二区三区国语自制 | 国产伦精品一区二区三区不卡| 波多野结衣高清一区二区三区| 波多野结衣AV一区二区三区中文 | 国产伦精品一区二区三区在线观看 | 合区精品久久久中文字幕一区| 蜜臀Av午夜一区二区三区|