20點提高網站訪問速度縮短網頁加載時(Hour)間!
網友上(Superior)網都不(No)喜歡用(Use)太多的(Of)時(Hour)間等待網頁的(Of)打開,等待的(Of)越長,用(Use)戶可能會直接關閉網頁,這(This)樣就會損失很多流量!其次,關鍵字的(Of)排名與網頁的(Of)打開速度也有關系,這(This)個(Indivual)主要(Want)體現搜索引擎對用(Use)戶體驗度上(Superior),用(Use)戶體驗度好,排名相對其它網站就好些。因此我覺得我們有必要(Want)去提高網頁的(Of)打開速度,這(This)個(Indivual)不(No)需要(Want)太多的(Of)成本投入,隻需要(Want)平時(Hour)多注意一(One)些小技巧就行了(Got it)!下面給出(Out)20種方法幫你提高網站訪問速度縮短網頁加載時(Hour)間。
1、減少頁面HTTP請求數量
比較直接的(Of)理解就是(Yes)要(Want)減少調用(Use)其他(He)頁面、文件的(Of)數量。
A.我們在(Exist)使用(Use)css格式控制的(Of)時(Hour)候,經常會采用(Use)background載入很多圖形文件,每個(Indivual)background的(Of)圖像至少産生1次HTTP請求,一(One)般我們爲(For)了(Got it)讓頁面生動活潑會大(Big)量使用(Use)background來加載背景圖,要(Want)改善這(This)個(Indivual)狀況,可以(By)采用(Use)css的(Of)1個(Indivual)有用(Use)的(Of)background-position屬性來加載背景圖,我們将需要(Want)頻繁加載的(Of)多個(Indivual)圖片合成爲(For)1個(Indivual)單獨的(Of)圖片,需要(Want)加載時(Hour),采用(Use)以(By)下形式加載即可将這(This)部分圖片加載的(Of)HTTP請求縮減爲(For)1個(Indivual)。
B.采用(Use)Image maps,這(This)個(Indivual)方法也比較常用(Use),隻是(Yes)限于(At)同1個(Indivual)區域使用(Use)。
C.Inline images,這(This)個(Indivual)方法很少見到,但對于(At)很小很簡單的(Of)圖像卻是(Yes)很實用(Use)的(Of),相關語法标準參照:tools.ietf.org/html/rfc2397。
2、使用(Use)CDN(Content Delivery Network)網絡加速
現在(Exist)國(Country)内做CDN加速業務的(Of)公司很多,簡單講,就是(Yes)将你的(Of)圖片、視頻擴散到CDN網絡所能到達之處,讓用(Use)戶訪問時(Hour)能就近下載到這(This)些文件,從而達到網絡提速的(Of)目的(Of),這(This)樣做,同時(Hour)能減輕你自己網站的(Of)負載。
3、添加文件過期或緩存頭
對于(At)同一(One)用(Use)戶頻繁訪問的(Of)圖片、Js腳本文件等可以(By)在(Exist)Apache或Nginx設置其緩沖 時(Hour)間,例如設置24小時(Hour)過期時(Hour)間,這(This)樣用(Use)戶在(Exist)訪問過該頁面之後再次訪問時(Hour),同一(One)組圖片或JS不(No)會再重複下載,從而減少了(Got it)HTTP請求,用(Use)戶訪問速度明顯有 所提升,同時(Hour)服務器負載也會下降。下面給出(Out)nginx配置中緩存控制的(Of)例子:
4、服務器開啓gzip壓縮
這(This)個(Indivual)大(Big)家都比較了(Got it)解,即将需要(Want)傳輸的(Of)内容壓縮後傳輸到客戶端再解壓,這(This)樣在(Exist)網絡上(Superior)傳輸的(Of) 數據量會大(Big)幅減小。通常在(Exist)服務器上(Superior)的(Of)Apache、Nginx可以(By)直接開啓這(This)個(Indivual)設置,也可以(By)從代碼角度直接設置傳輸文件頭,增加gzip的(Of)設置,也可以(By)從 負載均衡設備直接設置。不(No)過需要(Want)留意的(Of)是(Yes),這(This)個(Indivual)設置會略微增加服務器的(Of)負擔。
5、css格式定義放置在(Exist)文件頭部
這(This)項設置對于(At)用(Use)戶端是(Yes)慢速網絡或網頁内容比較龐大(Big)的(Of)情況比較有利,可以(By)在(Exist)網頁逐步呈現的(Of)同時(Hour)仍會保持格式信息,不(No)影響網頁美感。
6、Javascript腳本放在(Exist)文件末尾
很多Javascript腳本執行效率低下,或者有的(Of)第3方域名腳本出(Out)現意外無法載入, 如果将這(This)些腳本放置到頁面比較靠前的(Of)位置,可能會導緻我們自己網站的(Of)内容載入速度下降甚至無法正常加載,所以(By)一(One)般将這(This)些腳本放置在(Exist)網頁文件末尾,一(One)定要(Want)放 置在(Exist)前面的(Of)腳本要(Want)改用(Use)所謂的(Of)“後載入”方式加載,在(Exist)主體網頁加載完成後再加載,防止其影響到主體網頁的(Of)加載速度。
7、避免使用(Use)CSS腳本(CSS Expressions)
有時(Hour)爲(For)了(Got it)要(Want)css的(Of)參數動态改變,可能會采用(Use)css expression來實現,但這(This)樣做得不(No)償失,會使用(Use)戶端浏覽器負擔明顯加重,所以(By)不(No)建議這(This)樣做,如果需要(Want)改變,可以(By)使用(Use)Javascript腳本去實現。
8、css、javascript改由外部調用(Use)
如果css、js内容比較龐大(Big),盡量不(No)要(Want)寫到同1個(Indivual)頁面中去,改由外部載入比較妥當,因爲(For)浏覽器本身會對css、js文件進行緩存。
9、壓縮Javascript、CSS代碼
一(One)般js、css文件中存在(Exist)大(Big)量的(Of)空格、換行、注釋,這(This)些利于(At)閱讀,如果能夠壓縮掉,将會很有利于(At)網絡傳輸。這(This)方面的(Of)工具也有很多,一(One)般可以(By)保留開發版本,利用(Use)工具生成生産版本,2個(Indivual)文件比較,一(One)般壓縮率能達到50%以(By)上(Superior),減少的(Of)數據量還是(Yes)比較可觀的(Of)。
我這(This)個(Indivual)博客剛改版完成,各種代碼還沒有進行優化和(And)壓縮,目前yslow評級隻能達到D,等有時(Hour)間進行部分優化,達到C等級應該問題不(No)大(Big)。
10、避免采用(Use)301、302轉向
11、養成良好的(Of)開發維護習慣,盡量避免腳本重複調用(Use)
12、配置ETags
13、Ajax采用(Use)緩存調用(Use)
這(This)個(Indivual)的(Of)使用(Use)可以(By)參照Discuz論壇代碼,裏面對于(At)大(Big)量使用(Use)的(Of)Ajax調用(Use)都采用(Use)了(Got it)緩存 調用(Use)方式,一(One)般采用(Use)附加特征參數方式實現,注意其中的(Of)
就是(Yes)特征參數,這(This)個(Indivual)參數不(No)變化就使用(Use)緩存文件,如果發生變化則重新下載新文件或更新信 息。
14、合理使用(Use)Flush
用(Use)戶端發送浏覽請求後,服務器端一(One)般要(Want)花銷200-500ms去處理這(This)些請求,在(Exist)此期間,用(Use)戶端浏覽器處于(At)等待狀态,如果要(Want)減少用(Use)戶等待時(Hour)間,可以(By)在(Exist)适當的(Of)位置使用(Use)flush,将已經就緒的(Of)内容推送到用(Use)戶端,這(This)在(Exist)php中很容易實現例如:
15、Ajax調用(Use)盡量采用(Use)GET方法調用(Use)
實際使用(Use)XMLHttpRequest時(Hour),如果使用(Use)POST方法實現,會發生2次HTTP請求,而使用(Use)GET方法隻會發生1次HTTP請求。如果改用(Use)GET方法,HTTP請求減少50%!
16、盡可能減少DCOM元素
這(This)個(Indivual)很好理解,就是(Yes)盡可能減少網頁中各種<>元素數量,例如
的(Of)冗餘很嚴重,而我們完全可以(By)用(Use)取代之。
17、使用(Use)多域名負載網頁内的(Of)多個(Indivual)文件、圖片
記得有資料說明,IE在(Exist)網頁載入過程中,在(Exist)同1時(Hour)刻,對同1域名并行加的(Of)HTTP請求數 量最高爲(For)2個(Indivual),如果網頁需要(Want)加載的(Of)文件數量超過2個(Indivual)(通常遠遠超過..),要(Want)加快網頁訪問速度,最好将文件分布到多個(Indivual)域名,例如19樓,其js文件采用(Use)獨 立的(Of)域名,據說百度的(Of)圖片服務器數量在(Exist)20台以(By)上(Superior)。
18、縮減iframe的(Of)使用(Use),如無必要(Want),盡量不(No)要(Want)使用(Use)
iframe通常用(Use)于(At)不(No)同域名内容的(Of)加載,這(This)同時(Hour)也可能因iframe内容加載速度影響到主網頁加載速度,如果可能,把需要(Want)加載的(Of)内容抓取到本地直接嵌入。如果實在(Exist)需要(Want)iframe加載,采用(Use)後載入方式實現。
19、優化圖片文件
優化圖片文件,減小其尺寸,特别是(Yes)縮略圖,一(One)定要(Want)按尺寸生成縮略圖然後調用(Use),不(No)要(Want)在(Exist)網頁中用(Use)resize方法實現,雖然這(This)樣看到的(Of)圖片外形笑了(Got it),但是(Yes)其加載的(Of)數據量一(One)點也沒減少。曾經見過有人(People)在(Exist)網頁中加載的(Of)縮略圖,其真實尺寸有10M之巨…
普通圖像、icon也要(Want)盡可能壓縮後,可以(By)采用(Use)web圖像保存、減少顔色數等等方法實現。
20、當頁面内容龐大(Big)到一(One)定程度,可以(By)采用(Use)分頁的(Of)方式展現,或者taobao的(Of)那種翻頁後載入方式。
- 上(Superior)一(One)篇:如何減小DDoS攻擊的(Of)發生率和(And)破壞力?
- 下一(One)篇:備案不(No)用(Use)關閉網站的(Of)9種方法