如何提高網(wǎng)站加載性能。網(wǎng)站建設本公司根據(jù)自身經(jīng)驗總結了以下幾個方面,希望能給新手站長一些幫助。
1.減少HTTP請求的數(shù)量
構造請求和等待響應需要時間,因此請求越少越好。 request reduction的大致思路是整合資源,減少顯示一個頁面需要的文件數(shù)量。
1).圖像映射
通過設置label的usemap屬性,使用label可以裁剪圖片中的多個區(qū)域,指向不同的鏈接。與使用多個圖像單獨構建鏈接相比,減少了請求數(shù)量。
2).CSS Sprite(CSS貼圖整合/地圖扁平化/地圖定位)
這是通過設置元素的背景位置樣式來實現(xiàn)的。對于一般界面圖標。典型的可以參考TinyMCE編輯器頂部的那些小按鈕。本質(zhì)上是將一張統(tǒng)一的大圖通過不同的偏移量裁剪出多張小圖,這樣加載界面上的很多按鈕實際上只需要請求一次(request the large image once),從而減少了HTTP請求次數(shù)。
3).嵌入圖像(嵌入圖像)
不在src中指定外部圖片文件的URL,而是直接放圖片信息。例如,src='data:image/gif;Base64, R0lGODlhDAAMAL.'在一些特殊情況下很有用(比如一張小圖片只在當前頁面使用)。
2.使用多線CDN
為您的站點提供多線路(如中國電信、中國聯(lián)通、中國移動)和多個地理位置(北、南、西)訪問,讓所有用戶都能快速訪問。
3.使用HTTP緩存
向不經(jīng)常更新的資源(例如靜態(tài)圖像)添加更長的過期標頭信息。這些資源一旦緩存起來,以后很長一段時間都不會重傳。
4.使用Gzip壓縮
使用Gzip 壓縮HTTP 消息可以減少體積和傳輸時間。
5.將樣式表放在頁面的前面
先加載樣式表,這樣頁面渲染就可以更早開始,給用戶一種頁面加載速度更快的感覺。
6.將腳本放在頁面的末尾
同理5,先處理頁面顯示,提早完成頁面渲染,后執(zhí)行腳本邏輯,給用戶感覺頁面加載速度更快。
7.避免CSS表達式
過于復雜的JavaScript 腳本邏輯、DOM 搜索和選擇操作會降低頁面處理效率。
8.使用JavaScript和CSS作為拓展資源
這似乎違背了原則1中合并的思路,其實不然。 想一想,每個頁面都引入了一個通用的JavaScript資源(比如jQuery或ExtJS等JavaScript庫)。僅從頁面性能的角度來看,內(nèi)聯(lián)(即嵌入HTML 中的JavaScript)頁面加載速度比外部(使用標簽引入)頁面更快(因為它的HTTP 請求更少)。但是如果很多頁面都引入了這個普通的JavaScript資源,那么內(nèi)聯(lián)方案會造成重復傳輸(因為每個頁面都嵌入了這個資源,每次打開頁面都要傳輸這部分資源,造成網(wǎng)絡傳輸資源浪費).這個問題可以通過獨立和外部利用這些資源來解決。
由于JavaScript 和CSS 相對穩(wěn)定,我們可以為其對應的資源設置更長的有效期(參考原則3)。
9.減少DNS查找
作者給出的建議是:
1).使用Keep-Alive 保持聯(lián)系。
如果連接丟失,下次進行DNS查找時,即使已經(jīng)緩存了相應的域名-IP映射,也需要一些時間。
2).減少域名
每次申請新的域名,都需要通過DNS搜索不同的域名,而DNS緩存無法發(fā)揮作用。因此,盡量將網(wǎng)站組織在統(tǒng)一的域名下,避免使用過多的子域名。
10.壓縮你的JavaScript
使用JS 壓縮器壓縮你的JavaScript。非常有效。看看兩個不同的jQuery 發(fā)行版,看看它們有何不同:
http://code.jquery.com/jquery-1.6.2.js版的jQuery代碼,230KB
http://code.jquery.com/j
query-1.6.2.min.js壓縮的jQuery代碼(用于實際部署),89.4KB11.盡量避免重定向
重定向是指在你實際訪問你想看的頁面之前,增加一輪額外的HTTP請求(客戶端發(fā)起HTTP請求→HTTP服務器返回重定向響應→客戶端發(fā)起請求新的URL→HTTP服務器返回內(nèi)容,帶下劃線的部分是額外的請求),所以需要更多的時間(給人的感覺是響應較慢)。所以除非必要,不要隨意使用重定向。幾種“必要”情況:
1).避免URL無效
舊站點遷移后,為了避免舊URL失效,通常會將對舊URL的請求重定向到新系統(tǒng)的相應地址。
2).URL美化
在可讀性好的URL和實際的資源URL之間進行轉(zhuǎn)換。比如Google Toolbar,用戶記住的是http://toolbar.google.com,一個對人類有語義的地址,但是很難記住http://www . Google . com/tools/Firefox/Toolbar/FT3/intl/en/index . html,真正的資源地址。所以要保留前者,把對前者的請求重定向到后者。
12.刪除重復的腳本
不要在一個頁面中重復介紹同一個腳本。例如,如果腳本B和C都依賴于A,那么在使用B和C的頁面中可能會出現(xiàn)對A的重復引用,解決方案:對于簡單站點,手動檢查依賴關系,消除重復介紹;對于復雜的站點,需要建立自己的依賴管理/版本控制機制?! ?/p>
13.小心處理電子標簽
ETag是除Last-Modified之外的另一種HTTP緩存方式。確定資源是否已被哈希修改。但是ETag也有一些問題,比如:
1).不一致:不同的Web服務器(Apache、IIS等。)定義不同的ETag格式?! ?/p>
2).ETAG的計算是不穩(wěn)定的(由于太多的因素),例如:
1)相同的資源在不同的服務器上計算出來的etag是不同的,大型Web應用通常由多個服務器服務,導致客戶端在服務器A緩存的資源明顯仍然有效,但在下一個請求B中會因etag不同而被視為無效,導致相同資源的重復傳輸。
2)資源不變,但是ETag由于一些其他因素而變化,例如配置文件變化。直接結果就是系統(tǒng)更新后,客戶端緩存大規(guī)模失效,導致傳輸量大增,站點性能下降?! ?/p>
筆者的建議是:要么根據(jù)你的應用特點改進現(xiàn)有的ETag計算方法,要么干脆用最簡單的Last-Modified代替ETag?! ?/p>
14.在Ajax中使用HTTP緩存
Ajax是一個異步請求,它不會阻塞你當前的操作,當請求完成后,你可以立即看到結果。然而,異步并不意味著它可以立即完成,也不意味著它需要無限長的時間才能完成。因此,應該注意Ajax請求的性能。很多Ajax請求訪問的都是一些相對穩(wěn)定的資源,所以不要忘了利用好Ajax請求的HTTP緩存機制。詳見原則3和原則13。
我們專注高端建站,小程序開發(fā)、軟件系統(tǒng)定制開發(fā)、BUG修復、物聯(lián)網(wǎng)開發(fā)、各類API接口對接開發(fā)等。十余年開發(fā)經(jīng)驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!