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