高性能網站優化指南

  這篇文章主要介紹了高性能網站優化指南,本文總結14個優化技巧、注意事項、避免事項、優化規則等,須要的朋友能夠參考下php

    性能黃金法則:mysql

    只有10%~20%的最終用戶響應時間花在了下載HTML文檔上。其他的80%~90%時間花在了下載頁面中的全部組件上。web

    規則1 減小HTTP請求sql

    能夠經過使用圖片地圖,CSS Sprites(有利有弊),內聯圖片(data:URL模式,IE不支持,不能被緩存),合併腳本和樣式表。數據庫

    規則2 使用內容發佈網絡express

    若是應用程序web服務器離用戶更近,則一個HTTP請求的響應時間將縮短 ;瀏覽器

    若是組件web服務器離用戶更近,則多個HTTP請求的響應時間將縮短。緩存

    內容發佈網絡(CDN)是一組分佈在多個不一樣地理位置的web服務器,用於更加有效地向用戶發佈內容。服務器

    規則3 添加Expires頭網絡

    web服務器使用Expires頭告訴web客戶端他可使用一個組件的當前副本,直到指定的時間爲止。要求服務器與客戶端的時鐘嚴格同步,而且要在時間過時後在服務器配置中提供一個新的日期。

    Max-Age和mod_expires能夠彌補Expires的不足。

    規則4 壓縮組件

    從HTTp1.1開始,

    規則5 將樣式表放在頂部

    逐步呈現,避免白屏

    規則6 將腳本放在底部

    HTTP1.1規範建議瀏覽器從每一個主機名並行下載兩個組件,在下載腳本時,並行下載其實是被禁用的。

    緣由之一是腳本有可能使用document.write來修改頁面內容,所以瀏覽器會等待,以確保頁面可以恰當地佈局;

    緣由之二是爲了保證腳本可以按照正確的順序執行,若是並行下載多個腳本,就沒法保證響應是按照特定順序到達瀏覽器。

    將腳本放在頂部將會阻塞對其後面內容的呈現,而且會阻塞對其後面組件的下載。

    規則7 避免CSS表達式

    表達式expression方法被其餘瀏覽器忽略,可是對於IE來講是一個有用的工具。可以在IE中設置屬性,建立跨瀏覽器的一致體驗。例如,IE[IE6,IE7(Quirk),IE8(Quirk]不支持min-width屬性,用表達式的方法能夠解決這一問題:

代碼以下:

 

    width: expression(document.body.clientwidth<600?"600px": "auto");

    min-width: 600px;

    表達式的問題在於對其進行的求值的頻率比人們指望的要高。他們不只在頁面呈現和大小改變時求值,當頁面滾動甚至用戶鼠標在頁面上移過期都要求值。咱們能夠向CSS表達式中添加一個計數器來進行跟蹤。

    表達式計數器的實例:

    http://stevesouders.com/hpws/expression-counter.php

代碼以下:

 

    P {

    width: expression(setCntr(),document.body.clientwidth<600?"600px": "auto");

    min-width: 600px;

    }

    取表明達式的方法:事件處理器(Event Handlers)

    經過在onresize事件中設置樣式的width屬性來修正min-width問題。

    事件處理器的實例:

    http://stevesouders.com/hpws/event-handler.php

    當瀏覽器的大小改變時,這個例子使用setMinWidth()函數來修改全部段落元素的大小——

代碼以下:

 

    function setMinWidth(){

    setCntr(); //用於顯示求值次數

    var aElements = document.getElementsByTagName("p");

    for(var i=0;i<aElements.length;i++){

    aElements[i].runtimeStyle.width=(document.body.clientwidth<600?"600px": "auto");

    }

    }

    if(1!=navigator.userAgent.indexOf("MSIE")){

    window.onresize=setMinWidth;

    }

    這會在瀏覽器改變大小時中動態設置寬度,可是第一次呈現時這並不能恰當地設置段落大小,所以,頁面還須要使用「一次性表達式」,經過表達式設置初始寬度。

    規則8 使用外部JavaScript和CSS

    規則9 減小DNS查找

    規則10 精簡JavaScript

    精簡VS混淆VS壓縮

    規則11 避免重定向

    當Web服務器向瀏覽器返回一個重定向是,響應中就會擁有一個範圍在3xx的狀態碼。這表示用戶代理必須執行進一步操做才能完成請求。

    重定向影響的是HTML文檔的下載。

    規則12 移除重複腳本

    規則13 配置ETag

    規則14 使Ajax可緩存

ECS的選擇:

  1. CPU相對要高,drupal比較消耗CPU,開啓OPCache
  2. 硬盤,選擇高速IO硬盤,讀寫文件較快
  3. 按期備份相關文件
  4. 防火牆策略,建議修改SSH默認端口,以避免被攻擊

數據庫:

  1. 選擇RDS,不推薦自建MySQL服務,RDS作好按期備份策略
  2. 作好相關mysql配置
  3. 多併發能夠作MySQL主從配置

大文件圖片:

  1. 推薦使用OSS,搭配相關Drupal模塊
  2. 爲節省OSS流量,能夠配搭CDN,流媒體必定要經過OSS播放
相關文章
相關標籤/搜索