如何搭建集群網(wǎng)站提高網(wǎng)站的負(fù)載性能?
  • 更新時(shí)間:2024-10-24 14:18:21
  • 網(wǎng)站建設(shè)
  • 發(fā)布時(shí)間:1年前
  • 414

如何提高網(wǎng)站加載性能。網(wǎng)站建設(shè)本公司根據(jù)自身經(jīng)驗(yàn)總結(jié)了以下幾個(gè)方面,希望能給新手站長(zhǎng)一些幫助。

1.減少HTTP請(qǐng)求的數(shù)量

構(gòu)造請(qǐng)求和等待響應(yīng)需要時(shí)間,因此請(qǐng)求越少越好。 request reduction的大致思路是整合資源,減少顯示一個(gè)頁(yè)面需要的文件數(shù)量。

1).圖像映射

通過(guò)設(shè)置label的usemap屬性,使用label可以裁剪圖片中的多個(gè)區(qū)域,指向不同的鏈接。與使用多個(gè)圖像單獨(dú)構(gòu)建鏈接相比,減少了請(qǐng)求數(shù)量。

2).CSS Sprite(CSS貼圖整合/地圖扁平化/地圖定位)

這是通過(guò)設(shè)置元素的背景位置樣式來(lái)實(shí)現(xiàn)的。對(duì)于一般界面圖標(biāo)。典型的可以參考TinyMCE編輯器頂部的那些小按鈕。本質(zhì)上是將一張統(tǒng)一的大圖通過(guò)不同的偏移量裁剪出多張小圖,這樣加載界面上的很多按鈕實(shí)際上只需要請(qǐng)求一次(request the large image once),從而減少了HTTP請(qǐng)求次數(shù)。

3).嵌入圖像(嵌入圖像)

不在src中指定外部圖片文件的URL,而是直接放圖片信息。例如,src='data:image/gif;Base64, R0lGODlhDAAMAL.'在一些特殊情況下很有用(比如一張小圖片只在當(dāng)前頁(yè)面使用)。

2.使用多線(xiàn)CDN

為您的站點(diǎn)提供多線(xiàn)路(如中國(guó)電信、中國(guó)聯(lián)通、中國(guó)移動(dòng))和多個(gè)地理位置(北、南、西)訪(fǎng)問(wèn),讓所有用戶(hù)都能快速訪(fǎng)問(wèn)。

3.使用HTTP緩存

向不經(jīng)常更新的資源(例如靜態(tài)圖像)添加更長(zhǎng)的過(guò)期標(biāo)頭信息。這些資源一旦緩存起來(lái),以后很長(zhǎng)一段時(shí)間都不會(huì)重傳。

4.使用Gzip壓縮

使用Gzip 壓縮HTTP 消息可以減少體積和傳輸時(shí)間。

 5.將樣式表放在頁(yè)面的前面

先加載樣式表,這樣頁(yè)面渲染就可以更早開(kāi)始,給用戶(hù)一種頁(yè)面加載速度更快的感覺(jué)。

6.將腳本放在頁(yè)面的末尾

同理5,先處理頁(yè)面顯示,提早完成頁(yè)面渲染,后執(zhí)行腳本邏輯,給用戶(hù)感覺(jué)頁(yè)面加載速度更快。

7.避免CSS表達(dá)式

過(guò)于復(fù)雜的JavaScript 腳本邏輯、DOM 搜索和選擇操作會(huì)降低頁(yè)面處理效率。

集群網(wǎng)站建設(shè)如何提高網(wǎng)站的負(fù)載性能呢?

8.使用JavaScript和CSS作為拓展資源

這似乎違背了原則1中合并的思路,其實(shí)不然。 想一想,每個(gè)頁(yè)面都引入了一個(gè)通用的JavaScript資源(比如jQuery或ExtJS等JavaScript庫(kù))。僅從頁(yè)面性能的角度來(lái)看,內(nèi)聯(lián)(即嵌入HTML 中的JavaScript)頁(yè)面加載速度比外部(使用標(biāo)簽引入)頁(yè)面更快(因?yàn)樗腍TTP 請(qǐng)求更少)。但是如果很多頁(yè)面都引入了這個(gè)普通的JavaScript資源,那么內(nèi)聯(lián)方案會(huì)造成重復(fù)傳輸(因?yàn)槊總€(gè)頁(yè)面都嵌入了這個(gè)資源,每次打開(kāi)頁(yè)面都要傳輸這部分資源,造成網(wǎng)絡(luò)傳輸資源浪費(fèi)).這個(gè)問(wèn)題可以通過(guò)獨(dú)立和外部利用這些資源來(lái)解決。

由于JavaScript 和CSS 相對(duì)穩(wěn)定,我們可以為其對(duì)應(yīng)的資源設(shè)置更長(zhǎng)的有效期(參考原則3)。

9.減少DNS查找

作者給出的建議是:

1).使用Keep-Alive 保持聯(lián)系。

如果連接丟失,下次進(jìn)行DNS查找時(shí),即使已經(jīng)緩存了相應(yīng)的域名-IP映射,也需要一些時(shí)間。

2).減少域名

每次申請(qǐng)新的域名,都需要通過(guò)DNS搜索不同的域名,而DNS緩存無(wú)法發(fā)揮作用。因此,盡量將網(wǎng)站組織在統(tǒng)一的域名下,避免使用過(guò)多的子域名。

10.壓縮你的JavaScript

使用JS 壓縮器壓縮你的JavaScript。非常有效。看看兩個(gè)不同的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代碼(用于實(shí)際部署),89.4KB  

  11.盡量避免重定向  

  重定向是指在你實(shí)際訪(fǎng)問(wèn)你想看的頁(yè)面之前,增加一輪額外的HTTP請(qǐng)求(客戶(hù)端發(fā)起HTTP請(qǐng)求→HTTP服務(wù)器返回重定向響應(yīng)→客戶(hù)端發(fā)起請(qǐng)求新的URL→HTTP服務(wù)器返回內(nèi)容,帶下劃線(xiàn)的部分是額外的請(qǐng)求),所以需要更多的時(shí)間(給人的感覺(jué)是響應(yīng)較慢)。所以除非必要,不要隨意使用重定向。幾種“必要”情況:  

  1).避免URL無(wú)效  

  舊站點(diǎn)遷移后,為了避免舊URL失效,通常會(huì)將對(duì)舊URL的請(qǐng)求重定向到新系統(tǒng)的相應(yīng)地址?! ?/p>

  2).URL美化  

  在可讀性好的URL和實(shí)際的資源URL之間進(jìn)行轉(zhuǎn)換。比如Google Toolbar,用戶(hù)記住的是http://toolbar.google.com,一個(gè)對(duì)人類(lèi)有語(yǔ)義的地址,但是很難記住http://www . Google . com/tools/Firefox/Toolbar/FT3/intl/en/index . html,真正的資源地址。所以要保留前者,把對(duì)前者的請(qǐng)求重定向到后者?! ?/p>

  12.刪除重復(fù)的腳本  

  不要在一個(gè)頁(yè)面中重復(fù)介紹同一個(gè)腳本。例如,如果腳本B和C都依賴(lài)于A(yíng),那么在使用B和C的頁(yè)面中可能會(huì)出現(xiàn)對(duì)A的重復(fù)引用,解決方案:對(duì)于簡(jiǎn)單站點(diǎn),手動(dòng)檢查依賴(lài)關(guān)系,消除重復(fù)介紹;對(duì)于復(fù)雜的站點(diǎn),需要建立自己的依賴(lài)管理/版本控制機(jī)制?! ?/p>

  13.小心處理電子標(biāo)簽  

  ETag是除Last-Modified之外的另一種HTTP緩存方式。確定資源是否已被哈希修改。但是ETag也有一些問(wèn)題,比如:  

  1).不一致:不同的Web服務(wù)器(Apache、IIS等。)定義不同的ETag格式?! ?/p>

  2).ETAG的計(jì)算是不穩(wěn)定的(由于太多的因素),例如:  

  1)相同的資源在不同的服務(wù)器上計(jì)算出來(lái)的etag是不同的,大型Web應(yīng)用通常由多個(gè)服務(wù)器服務(wù),導(dǎo)致客戶(hù)端在服務(wù)器A緩存的資源明顯仍然有效,但在下一個(gè)請(qǐng)求B中會(huì)因etag不同而被視為無(wú)效,導(dǎo)致相同資源的重復(fù)傳輸?! ?/p>

  2)資源不變,但是ETag由于一些其他因素而變化,例如配置文件變化。直接結(jié)果就是系統(tǒng)更新后,客戶(hù)端緩存大規(guī)模失效,導(dǎo)致傳輸量大增,站點(diǎn)性能下降?! ?/p>

  筆者的建議是:要么根據(jù)你的應(yīng)用特點(diǎn)改進(jìn)現(xiàn)有的ETag計(jì)算方法,要么干脆用最簡(jiǎn)單的Last-Modified代替ETag?! ?/p>

  14.在A(yíng)jax中使用HTTP緩存  

  Ajax是一個(gè)異步請(qǐng)求,它不會(huì)阻塞你當(dāng)前的操作,當(dāng)請(qǐng)求完成后,你可以立即看到結(jié)果。然而,異步并不意味著它可以立即完成,也不意味著它需要無(wú)限長(zhǎng)的時(shí)間才能完成。因此,應(yīng)該注意Ajax請(qǐng)求的性能。很多Ajax請(qǐng)求訪(fǎng)問(wèn)的都是一些相對(duì)穩(wěn)定的資源,所以不要忘了利用好Ajax請(qǐng)求的HTTP緩存機(jī)制。詳見(jiàn)原則3和原則13。

我們專(zhuān)注高端建站,小程序開(kāi)發(fā)、軟件系統(tǒng)定制開(kāi)發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開(kāi)發(fā)、各類(lèi)API接口對(duì)接開(kāi)發(fā)等。十余年開(kāi)發(fā)經(jīng)驗(yàn),每一個(gè)項(xiàng)目承諾做到滿(mǎn)意為止,多一次對(duì)比,一定讓您多一份收獲!

本文章出于推來(lái)客官網(wǎng),轉(zhuǎn)載請(qǐng)表明原文地址:https://www.tlkjt.com/web/10124.html
推薦文章

在線(xiàn)客服

掃碼聯(lián)系客服

3985758

回到頂部