如果你的網站打開速度過慢,而你又不知道該如何解決,那么這篇文章是非看不可了。手把手的教你如何排查網站打開慢的原因,以及優化方法。
排查網站打開速度慢的原因:
1 網站服務器速度或租用空間所在服務器速度
服務器空間速度是網站打開速度快的硬件基礎,也是先決條件。否則即使你網站頁面設計的非常"苗條",網站打開速度也會打折扣。解決辦法:要找你的空間商解決或換空間商。
如何檢測服務器速度快慢呢?
方法一: ping命令看連接到服務器的時間和丟包情況。
1>單擊“開始”鍵並選擇運行;接着在“運行”對話框中輸入cmd
注:有的可能是輸入command,也有可能有的windows不帶DOS系統。
2>鍵入Ping和您要測試的網址(比如:Ping www.viila.net -t)。然后回車,便得到你訪問服務器的回時間。
一般,“PING”命令會自動進行下去,直到你讓它終止,如敲“ctrl + C”。如果你熟悉使用Telnet中PING的功能,並且你具有在不同網絡上的Telnet帳號,你就可以以不同的網絡為基礎,對其他的主機(IP地址或域名)進行PING的測試,你可以比較在不同的訪問點這些被訪問主機的回應時間,並得到“丟包率”、平均回應時間等測試結果。
time:顯示了信息包到達遠程主機后返回的時間。計算定位為毫秒。數值越小速度越快。
lost:丟包情況。
TTL:生存時間 指定數據包被路由器丟棄之前允許通過的網段數量。
一個速度好的機房,首先丟包率不能超過1%,最好是1000個沒有一個丟包,這種是最理想的,但是這個不是絕對值,只要低於1%的都屬於不錯的路由情況了。
其次ping值要小,同城的電信adsl ping 平均值絕對不能超過20,一般在10,跨省的adsl ping平均值應該在20-40屬於正常。
第三點是ping值要均勻,如果最小的ping值只有4,但是不時的有幾十,最大有79的出現,這個就是路由不穩定的表現,同樣的電信的adsl,盡管最小也有8,但是最大也只有9,就說明路由穩定。
方法二: 查看同台服務器上其它網站的打開速度。
相同IP地址站點查詢網址:http://indexed.linkhelper.cn/sameip.asp
通過上面的查詢工具可以看到和自已在同一台服務器上的網站個數和網址。可以看看其它網站是否打開也慢呢。
2 電信和聯通互訪瓶頸問題。
如果空間打開的速度時快時慢,甚至有時候打不開,那就是空間不穩定的原因。要找你的空間商解決或換空間商了;如果是在有的地方打開速度快,有的地方打開速度慢,那應該是網絡線路的問題。電信線路用戶訪問放在聯通服務器的網站,聯通線路用戶訪問放在電信服務器上的網站,相對來說打開速度肯定是比較慢。
解決辦法:如果購買空間的話,建議購買雙線空間或多線空間。這已不是新鮮的概念,大部分的虛擬主機商都有兩線或多線空間,價格高一些,但是從用戶體驗角度來說是物有所值的。
3 從網站本身找問題,網站的問題包括網站程序設計,網頁設計結構,網頁內容三個部分。
網站程序設計:
1>網頁中如果有幻燈片播放效果的代碼,需要審查一下,是否嚴重拖慢網站打開速度。
2>如果排除各方面原因,可以找搞程序設計的相關專業人士,查看程序的設計結構是否合理。
網頁設計結構:
1>如果是table布局的網站,查看是否嵌套次數多太,或是一個大表格然后分成多個表格這樣的網頁布局。解決辦法:建議用div 布局,配合css ,這樣不僅打開速度快,也有利於修改。
2>如果網站中有統計代碼,在線客服或是其它js代碼,看看是否放到了網頁代碼的最后面。解決辦法:最好盡可能的放到網頁代碼最后,當網站代碼加載完畢,才執行這些代碼。
3>可能有錯誤的代碼
一種情況是查看一下網頁代碼是否有不存在的圖片或文件路徑代碼。(如上圖所示用firebug 看到20.jpg這個圖片,紅色顯示表示實際不存在,代碼中有調用它的代碼)因為本身圖片在空間中不存在,可是在執行代碼的時候,執行到這一行時,卻要一直加載這個圖片,在細微程度上是會影響到網站的速度的。
另一種情況是從別的網站轉抄的特效javascript 代碼,可能轉載不全,有許多網頁錯誤,造成網站打開速度慢。解決辦法:修正網站上代碼錯誤。
4>盡量減少javascript的特效的使用。
如:鼠標特效、欄目特效、狀態欄特效等,這些特效的原理是先由服務器下載到你本地的機器,然后在本地機器上運行產生,如果觀看你網站的網友機器配置低的話,要運行一段時間才能完成。
網頁內容:
1>查看網頁中是否有許多尺寸大的圖片存在,如果非要圖片效果來表達的話,可以把大圖片切分成多個小圖片。圖片進行減肥處理,可以使字節數變得較小,否則很多的圖片會占用很多空間又使網站打開速度變得很慢。可以用photoshop、fireworks等作圖軟件將圖片尺寸縮小,使圖片的質量稍微降低一下,在圖片質量和圖片大小之間尋找一個最佳的比例。
2>查看網頁中是否有尺寸大的flash文件存在,排除表達效果外,盡量少用大型flash。
3>有的朋友喜歡在網頁中加音樂,用戶一打開網站,就有背景音樂播放,這樣的事情盡量不要做。
4>內容中過多地引用了其它網站的內容。如引用其他網站的圖片或其它內容,如果那個網站的速度慢,或者那個網站的頁面已經不存在了,打開的速度就會更慢。解決辦法:這樣問題常見的情況是,友情鏈接交換中圖片鏈接真接鏈接別的網站的logo圖片,建議先把對方的logo圖片上傳到自已的網站空間中,然后加上鏈接。第二種情況是許多朋友喜歡用iframe 嵌套別的網站上的搜索,查ip等小功能模塊,建議少用這種方式。
查看網站中圖片、代碼等加載情況可以用 firefox瀏覽器的插件工具firebug 工具查看。
一、優化圖片
幾乎沒有哪個網頁上是沒有圖片的。如果你經歷過56K貓的年代,你一定不會很喜歡有大量圖片的網站。因為加載那樣一個網頁會花費大量的時間。
即使在現在,網絡帶寬有了很多的提高,56K貓逐漸淡出,優化圖片以加快網頁速度還是很有必要的。
優化圖片包括減少圖片數、降低圖像質量、使用恰當的格式。
1、減少圖片數:去除不必要的圖片。
2、降低圖像質量:如果不是很必要,嘗試降低圖像的質量,尤其是jpg格式,降低5%的質量看起來變化不是很大,但文大小的變化是比較大的。
3、常識使用腳本文件代替效果:
比如一些web2.0的樣式,如果使用ps制作,每個圖片基本會增加%5-%25的大小成本.
相反,使用javascript代碼來實現效果,僅僅只增加幾個字節.
二、圖像格式的選擇
一般在網頁上使用的圖片格式有三種,jpg、png、gif。三種格式的具體技術指標不是這篇文章探討的內容,我們只需要知道在什么時候應該使用什么格式,以減少網頁的加載時間。
1、JPG:一般用於展示風景、人物、藝術照的攝影作品。有時也用在電腦截屏上。
2、GIF:提供的顏色較少,可用在一些對顏色要求不高的地方,比如網站logo、按鈕、表情等等。當然,gif的一個重要的應用是動畫圖片。
3、PNG:PNG格式能提供透明背景,是一種專為網頁展示而發明的圖片格式。一般用於需要背景透明顯示或對圖像質量要求較高的網頁上。
三、優化CSS
CSS疊層樣式表讓網頁加載起來更高效,瀏覽體驗也得到提高。有了CSS,表格布局的方式可以退休了。
但有時我們在寫CSS的時候會使用了一些比較羅嗦的語句,比如這句:
復制內容到剪貼板
代碼:
margin-top: 10px;
margin-right: 20px;
margin-bottom: 10px;
margin-left: 20px;
你可以將它簡化為:
margin: 10px 20px 10px 20px;
又或者這句:
<p class="decorated">A paragraph of decorated text</p>
<p class="decorated">Second paragraph</p>
<p class="decorated">Third paragraph</p>
<p class="decorated">Forth paragraph</p>
可以用div來包含:
<div class="decorated">
<p>A paragraph of decorated text</p>
<p>Second paragraph</p>
<p>Third paragraph</p>
<p>Forth paragraph</p>
</div>
四、網址后加斜杠
有些網址,比如http://www.viila.net/512 當服務器收到這樣一個地址請求的時候,它需要花費時間去確定這個地址的文件類型。如果220是一個目錄,不妨在網址后多加一個斜杠,讓其變成http://www.viila.net/512/,這樣服務器就能一目了然地知道要訪問該目錄下的index或default文件,從而節省了加載時間。
五、標明高度和寬度
這點很重要,但很多人由於懶惰或其它原因,總是將其忽視。當你在網頁上添加圖片或表格時,你應該指定它們的高度和寬度,也就是height和width參數。如果瀏覽器沒有找到這兩個參數,它需要一邊下載圖片一邊計算大小,如果圖片很多,瀏覽器需要不斷地調整頁面。這不但影響速度,也影響瀏覽體驗。
下面是一個比較友好的圖片代碼:
復制內容到剪貼板
代碼:
<img id="img" height="200" width="450" src="/Article/UploadFiles/200805/20080521125828444.gif" alt="banner" />
當瀏覽器知道了高度和寬度參數后,即使圖片暫時無法顯示,頁面上也會騰出圖片的空位,然后繼續加載后面的內容。從而加載時間快了,瀏覽體驗也更好了
六、減少http請求
當瀏覽者打開某個網頁,瀏覽器會發出很多對象請求(圖像、腳本等等),視乎網絡延時情況,每個對象加載都會有所延遲。如果網頁上對象很多,這可以需要花費大量的時間。
因此,要為http請求減負。如何減負?
1、去除一些不必要的對象。
2、將臨近的兩張圖片合成一張。
3、合並CSS文件
看看下面這段代碼,需要加載三個CSS文件:
<link rel="stylesheet" type="text/css" href="/body.css" />
<link rel="stylesheet" type="text/css" href="/side.css" />
<link rel="stylesheet" type="text/css" href="/footer.css" />
我們可以將其合成一個:
<link rel="stylesheet" type="text/css" href="/style.css" />
從而減少http請求。
七、其它小技巧
1、去除不必要加載項。
2、如果在網頁上嵌入了其它網站的widget,如果有選擇余地,一定要選擇速度快的。
3、盡量用圖片代替flash,這對SEO也有好處。
4、有些內容可以靜態化就將其靜態化,以減少服務器的負擔。
5、統計代碼放在頁尾(或者使用延遲加載)。