1. 程式人生 > >瀏覽器相容與優化

瀏覽器相容與優化

一、瀏覽器相容問題

1.IE條件註釋
書寫規則:

<!-- [if IE6]>Internet Expolore6<![end if] -->

在條件註釋中間,可以寫任意的程式碼塊,代表在該瀏覽器環境下才會執行。如:

<!-- [if IE6]><link rel="stylesheet href="index.css" /><![end if] -->  
  • if lt IE6:表示低於IE6版本,less than
  • if lte IE6:表示IE6及低於IE6版本,less than or equal
  • if gt IE6:表示高於IE6版本。 greater than
  • if gte IE6:表示IE6及高於IE6版本

二、瀏覽器優化

  • 規則一:把css檔案放在HTML的<head>標籤中載入。
    能讓頁面更早的開始渲染,避免閃屏;最好將關鍵渲染路徑的樣式直接寫在頁面中(如首屏的css樣式)
  • 規則二:把js檔案放在<body>標籤之後</body>標籤之前載入。
    因為js的載入會阻塞HTML的解析和css的渲染
  • 規則三:不要使用css表示式。
    因為css表示式存在相容性問題;看似強大,實際上效能開銷大。可能導致頁面卡頓
  • 規則四:用外鏈方式引用css 和 js。
    這麼做能有效減少HTML的體積,還能合理的利用瀏覽器的快取
  • 規則五:壓縮js 和 css檔案。
    生產環境中,刪除不必要的註釋,空白;歲javascript的變數名進行壓縮,混淆壓縮等。
  • 規則六: 不要再頁面中重複載入js檔案
    在IE中,會發起多個請求,不能發揮快取優勢;同時也意味著需要更長的js執行時間。
  • 規則七: 讓ajax請求可快取。
    GZIP,內容壓縮都可使用
  • 規則八: 用get方式發起ajax請求。
    因為get方式可以快取如果只是獲取資訊,get請求方式更加語義化。
  • 規則九: 元件延遲載入。
    這麼做是為了班長關鍵頁面資源優先載入,因為瀏覽器對併發數都有一定的限制(現代瀏覽器允許的最大併發數為 6 , IE下為 2)
    延遲載入的方法有: lazyload
  • 規則十: 減少DOM節點數
    DOM節點數越多,瀏覽器佈局渲染時的計算量就越大
  • 規則十一: 避免使用iframe。
    iframe會阻塞父文件的onload;即便是空白的<iframe>也是比較耗時的。
  • 規則十二: 減少cookie的體積。
    因為cookie每次請求都回附帶上全部的請求資訊(如js文件、圖片等)
  • 規則十三:使用無cookie域名載入靜態資源。
    這麼做事為了減少靜態資源載入時的網路傳輸量,靜態資源載入通常不需要cookie。
  • 規則十四:減少js中的DOM訪問
    因為當節點數增加時,查詢元素需要遍歷更深。應該合理利用documentFragment(即在全部需要建立的節點建立完畢後,將它們放進一個DocumentFragment中)。
    可以將查詢到的元素快取在一個變數中。
    不應使用js頻繁的修改樣式,因為這樣會導致瀏覽器的reflow,對效能損耗大。
  • 規則十五:使用更智慧的時間監聽機制。
    可以使用基於事件冒泡的點陣圖機制,它能有效的減少繫結數量(將事件繫結在父元素中)
  • 規則十六:使用常見的圖片優化手段。
    因為相對比其他資源文件,圖片的體積更大,可以使用:PNGCrush、JPEGTRAN、PNGQUANT對圖片資源進行優化。或者使用漸進式編碼:JPG
  • 規則十七:不要再HTML中縮放圖片。
    會徒增渲染開銷,提供適當尺寸的圖片即可。
  • 規則十八: 不要把圖片的src置空
    因為在IE、Chrome、Firefox中會引起額外的文件請求。
  • 規則十九:任何資源儘量控制在25k以內。
    在某些裝置下無法讀取大容量的資源