網友上網都不喜歡用太多的時間等待網頁的開啟,等待的越長,多使用者可能會直接關閉網頁,這樣就會損失很多流量!其次,關鍵字的排名與網頁的開啟速度也有關係,這個主要體現搜尋引擎對多使用者體驗度上,多使用者體驗度好,排名相對其它網站就好些。因此我覺得我們有必要去提高網頁的開啟速度,這個不需要太多的成本投入,只需要平時多注意一些小技巧就行了!下面給出 20 種方法幫您提高網站訪問速度縮短網頁載入時間。

1 、減少頁面 HTTP 請求數量

比較直接的理解就是要減少呼叫其他頁面、檔案的數量。

A. 我們在使用 css 格式控制的時候,經常會採用 background 載入很多圖形檔案,每個 background 的影象至少產生 1 次 HTTP 請求,一般我們為了讓頁面生動活潑會大量使用 background 來載入背景圖,要改善這個狀況,可以採用 css 的 1 個有用的 background-position 屬性來載入背景圖,我們將需要頻繁載入的多個圖片合成為 1 個單獨的圖片,需要載入時,採用以下形式載入即可將這部分圖片載入的 HTTP 請求縮減為 1 個。

網站載入時間 網站訪問速度 網站最佳化 多使用者體驗 

B. 採用 Image maps,這個方法也比較常用,只是限於同 1 個區域使用。

C.Inline images,這個方法很少見到,但對於很小很簡單的影象卻是很實用的,相關語法標準參照:tools.ietf.org/html/rfc2397 。

2 、使用 CDN(Content Delivery Network) 網路加速

現在國內做 CDN 加速業務的公司很多,簡單講,就是將您的圖片、視訊擴散到 CDN 網路所能到達之處,讓多使用者訪問時能就近下載到這些檔案,從而達到網路提速的目的,這樣做,同時能減輕您自己網站的負載。

3 、新增檔案過期或快取頭

對於同一多使用者頻繁訪問的圖片、 Js 指令碼檔案等可以在 Apache 或 Nginx 設定其緩衝 時間,例如設定 24 小時過期時間,這樣多使用者在訪問過該頁面之後再次訪問時,同一組圖片或 JS 不會再重複下載,從而減少了 HTTP 請求,多使用者訪問速度明顯有 所提升,同時伺服器負載也會下降。下面給出 nginx 配置中快取控制的例子:

網站載入時間 網站訪問速度 網站最佳化 多使用者體驗 

4 、伺服器開啟 gzip 壓縮

這個大家都比較瞭解,即將需要傳輸的內容壓縮後傳輸到客戶端再解壓,這樣在網路上傳輸的 資料量會大幅減小。通常在伺服器上的 Apache 、 Nginx 可以直接開啟這個設定,也可以從程式碼角度直接設定傳輸檔案頭,增加 gzip 的設定,也可以從 負載均衡裝置直接設定。不過需要留意的是,這個設定會略微增加伺服器的負擔。

5 、 css 格式定義放置在檔案頭部

這項設定對於多使用者端是慢速網路或網頁內容比較龐大的情況比較有利,可以在網頁逐步呈現的同時仍會保持格式資訊,不影響網頁美感。

6 、 Javascript 指令碼放在檔案末尾

很多 Javascript 指令碼執行效率低下,或者有的第 3 方域名指令碼出現意外無法載入, 如果將這些指令碼放置到頁面比較靠前的位置,可能會導致我們自己網站的內容載入速度下降甚至無法正常載入,所以一般將這些指令碼放置在網頁檔案末尾,一定要放 置在前面的指令碼要改用所謂的 “後載入” 方式載入,在主體網頁載入完成後再載入,防止其影響到主體網頁的載入速度。

7 、避免使用 CSS 指令碼 (CSS Expressions)

有時為了要 css 的引數動態改變,可能會採用 css expression 來實現,但這樣做得不償失,會使多使用者端瀏覽器負擔明顯加重,所以不建議這樣做,如果需要改變,可以使用 Javascript 指令碼去實現。

8 、 css 、 javascript 改由外部呼叫

如果 css 、 js 內容比較龐大,儘量不要寫到同 1 個頁面中去,改由外部載入比較妥當,因為瀏覽器本身會對 css 、 js 檔案進行快取。

9 、壓縮 Javascript 、 CSS 程式碼

一般 js 、 css 檔案中存在大量的空格、換行、註釋,這些利於閱讀,如果能夠壓縮掉,將會很有利於網路傳輸。這方面的工具也有很多,一般可以保留開發版本,利用工具生成生產版本,2 個檔案比較,一般壓縮率能達到 50% 以上,減少的資料量還是比較可觀的。

我這個部落格剛改版完成,各種程式碼還沒有進行最佳化和壓縮,目前 yslow 評級只能達到 D, 等有時間進行部分最佳化,達到 C 等級應該問題不大。

10 、避免採用 301 、 302 轉向

11 、養成良好的開發維護習慣,儘量避免指令碼重複呼叫

12 、配置 ETags

13 、 Ajax 採用快取呼叫

這個的使用可以參照 Discuz 論壇程式碼,裡面對於大量使用的 Ajax 呼叫都採用了快取 呼叫方式,一般採用附加特徵引數方式實現,注意其中的

網站載入時間 網站訪問速度 網站最佳化 多使用者體驗

就是特徵引數,這個引數不變化就使用快取檔案,如果發生變化則重新下載新檔案或更新信 息。

14 、合理使用 Flush

多使用者端傳送瀏覽請求後,伺服器端一般要花銷 200-500ms 去處理這些請求,在此期間,多使用者端瀏覽器處於等待狀態,如果要減少多使用者等待時間,可以在適當的位置使用 flush,將已經就緒的內容推送到多使用者端,這在 php 中很容易實現例如:

網站載入時間 網站訪問速度 網站最佳化 多使用者體驗

15 、 Ajax 呼叫儘量採用 GET 方法呼叫

實際使用 XMLHttpRequest 時,如果使用 POST 方法實現,會發生 2 次 HTTP 請求,而使用 GET 方法只會發生 1 次 HTTP 請求。如果改用 GET 方法,HTTP 請求減少 50%!

16 、儘可能減少 DCOM 元素

這個很好理解,就是儘可能減少網頁中各種<>元素數量,例如

的冗餘很嚴重,而我們完全可以用取代之。

17 、使用多域名負載網頁內的多個檔案、圖片

記得有資料說明,IE 在網頁載入過程中,在同 1 時刻,對同 1 域名並行加的 HTTP 請求數 量高為 2 個,如果網頁需要載入的檔案數量超過 2 個 (通常遠遠超過..),要加快網頁訪問速度,知名將檔案分佈到多個域名,例如 19 樓,其 js 檔案採用獨 立的域名,據說百度的圖片伺服器數量在 20 臺以上。

18 、縮減 iframe 的使用,如無必要,儘量不要使用

iframe 通常用於不同域名內容的載入,這同時也可能因 iframe 內容載入速度影響到主網頁載入速度,如果可能,把需要載入的內容抓取到本地直接嵌入。如果實在需要 iframe 載入,採用後載入方式實現。

19 、最佳化圖片檔案

最佳化圖片檔案,減小其尺寸,特別是縮圖,一定要按尺寸生成縮圖然後呼叫,不要在網頁中用 resize 方法實現,雖然這樣看到的圖片外形笑了,但是其載入的資料量一點也沒減少。曾經見過有人在網頁中載入的縮圖,其真實尺寸有 10M 之巨…

普通影象、 icon 也要儘可能壓縮後,可以採用 web 影象儲存、減少顏色數等等方法實現。

20 、當頁面內容龐大到一定程度,可以採用分頁的方式展現,或者 taobao 的那種翻頁後載入方式。