簡單網站最佳化

來源:互聯網
上載者:User

標籤:

一、為什麼要網站最佳化1.1、大型網站的特點
  • 高訪問量
  • 同時線上人數多
  • 資料量龐大
  • 資料操作頻繁
1.2、網站效能測試指標(使用者角度)
  • 日訪問量
  • 同時線上人數
  • 最大並發串連數
  • 訪問回應時間
1.3、網站效能個體體現
  • 首屏時間:一個網站被瀏覽器上部,800*600地區充滿所需要的時間
  • 網頁訪問可用性:使用者訪問網頁的成功率。
  • DNS時間:瀏覽器將地址發送給DNS伺服器,DNS伺服器根據地址返回IP到瀏覽器,瀏覽器得到IP地址,此為DNS時間
  • 建立連線時間:包含DNS時間後,瀏覽器重到IP地址後,再將客戶投訴請求發送至WEB伺服器,然後建立串連,這時建立連線時間結束
  • 重新導向時間:網頁間跳轉時間,如檢查是否是會員,不是就跳轉登入
  • 第一個資料包時間:瀏覽器發送HTTP請求結束開始,到接收到WEB伺服器返回的第一個資料包的消耗時間
  • 總下載時間:頁面所內容下載所用的時間,網頁的總耗時
  • 錯誤情況:網站的錯誤情況代表網站的營運品質。
1.4、客戶投訴問題
  • 網速慢
  • 個別頁面開啟時間過久,或者打不開
二、使用YSlow外掛程式分析網站效能

YSlow外掛程式,是yahoo是運行在FireFox瀏覽器上面的,同時要有FireBug才可以運行

三、網頁內容最佳化3.1、減少HTTP請求
  • 合并檔案(js或者css檔案)
  • css Sprites圖片拼合(常 用)
  • 圖片地圖
3.2、減少DNS尋找次數
  • 減少主機名稱的數量可以減少DNS尋找次數,
  • 減少DNS尋找次數可以節省回應時間
  • 減少主機名稱會減少頁面當時並行下載的數量,但是這樣又會增加回應時間
  • 原則:將這些頁面中的內容分割成至少2部分,但不超過4部分。結果:減少DNS尋找次數與保持並行下載兼顧
3.3、避免跳轉

301代碼、302代碼。預設不緩衝,須增加Expires或者Cache-Control來指定緩衝

開時時注意不要忽略URL本該有的斜杠(/);

3.4、可快取的AJAX

設定在用戶端緩衝

3.5、減少DOM元素數量

DOM元素過多,會使遍曆DOM的效率慢。

不用移除內容,而是替換,精簡元素標籤

減少DIV元素的嵌套

3.6、盡量避免使用iframe

優點:

  • 解決載入緩慢的第三方內容
  • 只需要修改一個iframe內容,便可以改變所有應用該iframe頁面

缺點:

  • 即使內容為空白,載入也需要時間
  •  阻止頁面載入
  • 沒有語意
3.7、避免404錯誤

錯誤的載入會破壞並行載入

瀏覽器會把試圖在返回的404響應內容中找到可能有用的部分當作javascript代碼來執行

四、圖片最佳化4.1、使用工具最佳化圖片

檢查你的GIF圖片當中映像顏色的數量是否和調色盤規格一致,如只使用到了4種顏色,而調色盤中有256中規格,說明還有最佳化的空間

嘗試把GIF格式轉換成PNG格式,看看是否有節省空間的

在所有有PNG圖片上運行pngcruch或者其它的PNG最佳化工具

在所有JPEG圖片上運行jpegtran,可以對圖片中出現的鋸齒等無損進行操作,同時它還可以最佳化和清除圖當中的注釋以及其它的無用資訊

最後,把所有的圖片紡一的jpg或者是gif或者png格式,行適當的轉,可以達到很好最佳化效果,

盡量避免使用bmp格式,對使用者上傳的格式進行一個格式轉換可以達到很好的壓縮效果

Jpegtran

JPEG的壓縮公用程式有jpegtran和jpegoptim,這兩款工具的壓縮效果幾乎沒有區別,在這裡我們推薦使用jpegtran,相比後者,jpegtran可以進行progressive編碼,使圖片漸進式的展現,先顯示模糊的圖片,再逐步清晰。

推薦命令列參數:

jpegtran –copy none –optimize -progressive -outfile out.jpg in.jpg

想知道這些參數的具體作用,可使用命令“jpegtran –h”瞭解,

4.2、使用合理的圖片尺寸

不要使用一個比實際需要大得多的圖片,不要在網頁中縮放圖片

4.3、favicon.ico要小而且要可緩衝

favicon.ico位為網店的根目錄

favicon.ico檔案不要缺少,而檔案要盡量小,可以緩衝

4.4、使用css Sprites最佳化頁面小圖片

CSS Sprites技術中,水平柏拉圖片會比垂直排列效果更好

顏色相近的圖片組合在一起,可以降低顏色數

合理的應用CSS Sprites技術,不要在Spirite的映像中間留有較大空隙

五、最佳化CSS和JavaScript5.1、把樣式表置於頂部

開發階段將樣式和代碼分離,開發完畢後再將樣式放在頁面的<head>頭部中

5.2、使用<link>代替@import
<link type="text/css"" rel="stylesheet" href="style.css" />

用<link>代替@import來實現外部樣式表的匯入

5.3、避免使用濾鏡

避免使用濾鏡,使用PNG格式的圖片來代替,主流瀏覽器一般都支援這種格式,必要時使用CSS Hack來處理IE6瀏覽器下的效果

5.4、精簡CSS和JavaScript

精簡工具:

JSMin:javascript

YUI Compressor: javascript也可以用來精簡CSS

<script>和<style>代碼塊也可以並且應該進行消減

精簡代碼,採用縮寫

5.5、把JavaScript放在HTML的底部

把指令碼放在HTML頁面底部

(document.write()輸出語句例外)

六、最佳化Cookie6.1、縮小Cookies大小
  • 去除不必要的Cookie
  • 設定合理的到期時間
6.2、避免使用全域網域名稱的Cookie

應該以圖片等頁面元素使用沒有Cookie的網域名稱

七、伺服器端最佳化7.1、使用內容分髮網絡

Content Delivery Network簡稱為CDN

使用CDN(內容分髮網絡),但成本高

7.2、為檔案頭指定Expires或者Cache-Control

靜態內容設定:Expires的值為"Never expire"(永不到期)

動態內容設定:Cache-Control設定合適的值如"no-cache"

Expires檔案頭經常用於影像檔,但是應該在所有的內容當中使用,包括指令碼、樣式表和Flash等

7.3、使用Gzip壓縮檔內容

開啟應用伺服器端的Gzip壓縮設定

在Tomcat中啟用Gzip壓縮:

修改%TOMCAT_HOME%/conf/server.xml,修訂節點如下:

<Connector port="8080" protocol="HTTP/1.1"                    connectionTimeout="20000"                    redirectPort="8443"                    compression="on"                    compressionMinSize="2048"                    noCompressionUserAgents="gozilla,traviata"                   <!--下面可以設定要壓縮的類型有哪些--> compressableMimeType="text/html,text/xml,text/javascript,application/x-javascript,application/javascript,text/css,text/plain"/>
從上面節點的屬性可以看出,要使用gzip壓縮功能,你需要在Connector節點中加上如下屬性compression="on" 開啟壓縮功能 compressionMinSize="50" 啟用壓縮的輸出內容大小,預設為2KB noCompressionUserAgents="gozilla, traviata" 對於以下的瀏覽器,不啟用壓縮 compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 哪些資源類型需要壓縮
7.4、使用GET來完成AJAX請求
  • POST:先傳送檔案頭,然後才發送資料
  • GET:一個TCP包

擷取資料時建議使用GET,相反,發送並在服務端儲存資料時才使用POST

IE中URL最大長度為2K,如果擷取的資料大於2K,就不能使用GET,

八、開發角度看最佳化

動態網頁面的弊端:

  • 伺服器壓力大
  • 頁面回應時間長
  • 安全問題

實施靜態化的原因:

  • 提高訪問速度
  • 減輕伺服器壓力
  • 加強安全性
  • 利於搜尋引擎收錄
九、如何靜態化網站

目前絕大多數網站都是採用:模板技術 來對網站靜態化

9.1、網站靜態化的好處

效率方面:

  • 純靜態化HTML頁面:以HTM/HTML結尾,效率最高,消耗最小,速度最快
  • 減輕伺服器的壓力:相比動態網頁面要執行指令碼,資料庫操作,靜態頁面只需要將相應的靜態頁面返回給用戶端
  • 利於搜尋引擎收錄:動態網頁面的產生是採用資料庫內容,所以網頁內容主題的永恒性並不能保證,這樣就造成了搜尋引擎的閱讀困難,也就是搜尋引擎抓不住一個永恒的主題,因此不能輸入到搜尋引擎的緩衝當中。別外,動態串連,存在一個信任問題,用記以及搜尋引擎無法確定這個頁面會一直存在。搜尋引擎對於靜態連結就更加友好,所以把動太網址進行URL重寫使其靜態化,是一個非常重要的最佳化技巧
  • 提高伺服器的效能:動態網頁面要經常讀取資料庫,而靜態頁面只需要將相應的靜態頁面返回給用戶端

安全方面:

  • 防SQL注入:靜態頁面根本就不存在資料庫操作,杜絕了SQL注入的可能性
  • 網站出錯時,不影響網站正常訪問。動態網頁面:如果發生錯誤或者是資料庫出現了問題,那麼從資料庫讀取資料的頁面就必然無法正常的訪問了。而靜態頁面只會在產生靜態頁面時調用資料庫操作,產生之後就不會對資料庫進行任何操作了,因此媽便是資料庫崩潰了,使用者仍然可以訪問到已經存在的靜態頁面
9.2、靜態化實現方式-模板技術

對網站必要的部分實行靜態化操作,同一個網站下的不同網頁,風格一般都要保持一致,不同的只是內容,

讓靜態化的時候能夠重用頁面的整體架構,風格等這些就是模板

9.3、JAVA中靜態化操作

Velocity或者FreeMarker等模板架構來實現。

它允許任何人僅簡單的使用範本語言,來引用由JAVA代碼定義的對象。

當Velocity應用於web開發時,介面設計人員可以和java程式開發人員,同步開發一個遵循MVC架構的WEB網站,也就是說,頁面設計人員可以只關注頁面的顯示效果,而java程式開發人員只關注商務邏輯編碼的實現。

Velocity將java代碼從web頁面中分離出來,為web網站的長期維護提供了便利

十、初識MVC

MVC:mode view  controller

十一、最佳化資料庫查詢11.1、在查詢頻繁的列上添加合適的索引
  • 判斷並建立必要的索引:使所建立的索引對資料的工作效率提高有所協助
  • 對索引使用一些規則:建立索引時,應該與實際的查詢相結合
  • 合登理的索引對SQL語句的意義:確保其得到了真正的使用,能發揮作用
11.2、盡量少用IN或者NOT IN

在where子句中盡量少使用IN 或者NOT IN 

可以使用EXIST 或者NOT EXIST來代替IN或者NOT IN

11.3、盡量少用萬用字元*

查詢語句寫上欄位名,盡量不使用*如:select top 50 col1 from table1

11.4、盡量少用LIKE

使用LIKE會導致建立的索引效,降低查詢效率

十二、效能監測12.1、為什麼需要監測網站的效能

網站的效能是隨著瀏覽量以及硬體設施的不同而發生變化的,網站在運營前或者運營期間有必要對網站整體效能進行監測

12.2、監測階段
  • 網站開發期間
  • 網站運營期間
12.3、監測軟體
  • 網站開發期間:使用LoadRunner等專業的負載測試工具

使用LoadRunner等專業的負載測試工具優點:

  • 輕鬆建立虛擬使用者:Virtual User Generator輕鬆建立虛擬使用者,以虛擬使用者的方式類比真實使用者的業務操作行為
  • 建立真實的負載:Controller,來設定商務程序組合與虛擬使用者數量,很快的組織起多使用者的測試方案
  • 定位效能的問題:LoadRunner內含整合的即時監測器,在負載測試任何時間,都可以觀測到應用系統的運行效能
  • 分析結果以精確定位問題所在:測試完畢合,會收集匯總所有資料並產生進階的測試報告。
  • 重複測試保證系統發布的高效能:Controller,允許重複執行與出錯修改前的相同測試方案
  • 網站運營期間:監控寶,美圖的Service Uptime,Uptime Robot等

 

簡單網站最佳化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.