DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> WEB網站前端 >> 前端技巧 >> 使你的網站快速跑起來
使你的網站快速跑起來
編輯:前端技巧     

性能真的很重要嗎?

性能很重要,這個大家都知道。為什麼我們還要做出速度很慢的網站,給用戶一個糟糕的體驗呢?呵呵,讓我們進入重點。

HTML

一.避免內鏈/嵌入式代碼:

1) 內聯式: 在HTML標簽的style屬性中定義樣式,在onclick這樣的屬性中定義Javascript代碼;
2) 嵌入式: 在頁面中使用<style>標簽定義樣式,使用<script>標簽定義Javascript代碼;
3) 引用外部文件: 在<style>標簽中定義href屬性引用CSS文件,在<script>標簽中定義src屬性引入Javascript文件.

1,2雖然減少了http請求數,但是增加了html的大小,相比3的總體大小甚小,便於分工操作,便於維護。

二.樣式在上,腳本在下:

<html>
  <head>
      <meta charset="UTF-8">
      <title>Browser Diet</title>
      <!-- CSS -->
      <link rel="stylesheet" href="style.css" media="all">
  </head>
  <body>
     <a>hello</a>
     <!-- JS -->
     <script async src="script.js"></script>
  </body>
</html>

1)樣式在head裡面,頁面渲染很快,會使用戶感覺頁面加載很快。反之,會先看到錯亂的頁面布局,給人感覺不好。
2)腳本在上會影響html的渲染或並行加載,並且首屏加載,用戶一般不需要看到功能,所以腳本在下為好。嘗試用異步加載腳本的屬性:async

三.壓縮html

為了保持代碼的可讀性,最好的方法是在代碼中添加注釋和使用縮進。

但是對於浏覽器來說,這些都是不重要的。正因為如此,通過自動化工具壓縮你的HTML是非常有用的。

通過移除多余的空白符、注釋和一些與內容結構無關的的不需要的字符,能夠節省一些字節。嘗試用gzip壓縮方式。

四.減少dom結點

用語義化的標簽來代替萬能的div。

五.《html寫法對gzip壓縮率的影響》

書寫標簽屬性時,最好多個相同標簽屬性值順序一致。可以使gzip壓縮更快。

CSS

一.壓縮css

通過自動化工具壓縮css,同壓縮html。重復性的代碼學會提煉。

二.合並多個css

普遍通過cdn合並或公司的合並工具進行合並,有效減少http請求數量。

三.合理使用css表達式

不是所有人都能合理使用css表達式的。所以把功能都交給javascript。css我們要休息一下喽。

IMAGES

一.使用css sprite

將psd裡面小的圖層整合到一張圖層裡面,布局完成。布局要緊促。對於有些圖片有毛邊的,可以設置雜邊的顏色。也可以將png-8設置成png-24(ie6濾鏡處理)

二.用base64圖片編碼替代普通css sprite圖片

使用前:

.img {
  background-image: url('image.png');
}

使用後:

.img {
  background-image: url('data:image/png;base64,iVBORw0KGgo');}

base64圖片編碼只針對於單獨的圖片,而不是css sprite圖片,支持主流浏覽器及ie8以上。可以減少http請求數量,但是對於沒有gzip壓縮的html,css來說,減少http請求得來的大文件是不可取的。

三.優化圖片

圖片格式要控制好,在圖片質量ok的情況下,png,jpg,gif格式根據情況合理利用。一般css sprite用png格式,動畫圖片用gif格式,色彩鮮艷的廣告圖片用jpg.

圖片大小要控制好,網站可以緩存圖片。一般一張廣告圖片要在100k左右,如果圖片實在太大,可以將一張圖片切成幾塊,拼接而成。

某前端css網站聲明,凡是必須用圖片來布局的都是耍流氓。隨著css3的流行,這句話將成為一句座右銘。

四.《Progressive JPEG 解析》

綜述,連續的jpg格式對性能更好。

JAVASCRIPT

一.異步加載文件

var vst = document.createElement('script');
    vst.type = 'text/javascript';
    vst.async = true;
    vst.src =srcIndex;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(vst, s);

當一些第三方文件等下載成了問題,或是導致頁面加載負重。我們就需要異步加載這些文件,async是個好的方式。

二.將循環的對象存儲

使用前:

var str = "nanananana"; 
for (var n = 0; n < str.length; n++) {}

使用後:

 var str = "nanananana", 
strLgth = str.length; 
for (var n = 0; n < strLgth ; n++) {}

循環對性能的消耗是很大的,將循環的對象存儲,減少每次循環都要進行對象的計算。

三.最小化減少回流和重繪

使用前:

var coored = document.getElementById("ctgHotelTab");
    document.getElementById("ctgHotelTab").style.top = coored.offsetTop + 35 + "px";

使用後:

var coored = document.getElementById("ctgHotelTab"),
    offetTop = coored.offsetTop + 35;
    document.getElementById("ctgHotelTab").style.top = offetTop + "px";

當一個元素的布局不變,外觀發生改變時,就會引起重繪。

當你設置style.top時,浏覽器需要重新計算布局,我們每次請求offsetTop時,都會使浏覽器重新計算布局,改變一個布局,就會導致回流。

四.壓縮javascript

通過自動化工具壓縮js。同html和css。

五.合並多個js文件

普遍通過cdn合並或公司的合並工具進行合並,有效減少http請求數量。

六.源生js和框架js相比,針對循環,for比each要好。

性能測試工具

我經常使用的是YSLOW。page speed也不錯。都會給你一些性能上的建議。

總結

性能很重要,毋容置疑。我的只是工作上的分享,僅供參考。詳見:http://browserdiet.com/zh/

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved