...">
瀏覽量:234次
1、 前端優(yōu)化
首先,讓我們談?wù)勄岸藘?yōu)化。80%的用戶訪問(wèn)網(wǎng)頁(yè)的等待時(shí)間發(fā)生在瀏覽器前端,尤其是頁(yè)面和頁(yè)面中各種元素(圖片、CSS、JavaScript、flash…)的下載。因此,在許多情況下,與花費(fèi)大量時(shí)間在困難和復(fù)雜的程序改進(jìn)上相比,前端優(yōu)化往往可以事半功倍。
對(duì)于首次訪問(wèn)您的網(wǎng)站但尚未將您的網(wǎng)站內(nèi)容緩存在瀏覽器緩存中的用戶,我們可以執(zhí)行以下操作:
1) 減少頁(yè)面訪問(wèn)生成的HTTP連接數(shù)
對(duì)于首次訪問(wèn)您的網(wǎng)站的用戶,頁(yè)面生成的HTTP連接數(shù)是影響性能的關(guān)鍵瓶頸。
對(duì)策:
-保持頁(yè)面設(shè)計(jì)盡可能簡(jiǎn)單,盡量減少圖片的使用,并通過(guò)放棄一些不必要的頁(yè)面效果來(lái)減少JavaScript的使用。
-使用一些優(yōu)化技術(shù),如利用圖片的背景位移來(lái)減少圖片數(shù)量;影像地圖技術(shù);使用inlineimages將CSS圖像捆綁到網(wǎng)頁(yè)中。
-嘗試合并JS和CSS文件以減少獨(dú)立文件的數(shù)量。
2) 將CSS放在頁(yè)面頂部,將JS文件放在頁(yè)面底部
CSS引用應(yīng)放在HTML的標(biāo)題中,JS文件引用應(yīng)盡可能放在頁(yè)面底部標(biāo)記的后面。其主要思想是盡快顯示核心頁(yè)面內(nèi)容。但是需要注意的是,對(duì)于一些使用了大量JS的頁(yè)面,底部的一些JS文件可能會(huì)導(dǎo)致一些不可預(yù)知的問(wèn)題,可以根據(jù)實(shí)際情況適當(dāng)使用。
具體來(lái)說(shuō),一些JavaScript壓縮工具用于壓縮JS腳本、刪除空白字符和注釋以及最小化變量名?;趃zip壓縮,JS內(nèi)容的壓縮可以將性能再提高5%。
3) 盡量減少使用外部腳本并減少DNS查詢時(shí)間
對(duì)于網(wǎng)站的頻繁用戶,主要的優(yōu)化思想是很大限度地利用用戶瀏覽器的緩存,以減少服務(wù)器的開銷。
4) 在標(biāo)題中添加過(guò)期時(shí)間(expiresheader)
向標(biāo)頭中的靜態(tài)內(nèi)容添加一個(gè)較長(zhǎng)的過(guò)期時(shí)間,以便用戶將來(lái)只能讀取緩存中的文件,而無(wú)需與服務(wù)器進(jìn)行任何交互。然而,這樣做也存在一些問(wèn)題。更新圖像、CSS和JS文件時(shí),如果用戶不刷新瀏覽器,則無(wú)法獲得更新。這樣,當(dāng)我們修改圖像、CSS和JS文件時(shí),我們必須重命名它們,以確保用戶能夠訪問(wèn)有價(jià)值的內(nèi)容。這可能會(huì)給開發(fā)帶來(lái)很多麻煩,因?yàn)檫@些文件可能會(huì)被站點(diǎn)中的許多文件引用。Flickr提出的處理方法是通過(guò)URL重寫使不同版本號(hào)的URL實(shí)際指向同一個(gè)文件,這是一種聰明的方法,因?yàn)閁RL級(jí)別的操作效率很高,可以為開發(fā)過(guò)程提供很多便利。
要了解原因,您必須了解瀏覽器在訪問(wèn)URL時(shí)的工作方式:
A.首次訪問(wèn)URL時(shí),用戶從服務(wù)器段獲取頁(yè)面內(nèi)容,將相關(guān)文件(圖像、CSS、JS…)放入緩存,并在文件頭中保留過(guò)期時(shí)間、LastModified、ETag和其他相關(guān)信息。
B當(dāng)用戶重復(fù)訪問(wèn)URL時(shí),瀏覽器首先檢查緩存中是否存在同名文件。如果是,請(qǐng)檢查文件的過(guò)期時(shí)間;如果文件未過(guò)期,則直接從緩存讀取該文件,并且不再訪問(wèn)服務(wù)器。
C如果緩存中文件的過(guò)期時(shí)間不存在或已超過(guò),瀏覽器將訪問(wèn)服務(wù)器以獲取文件的標(biāo)題信息,檢查L(zhǎng)astModified、etags和其他信息。如果發(fā)現(xiàn)自上次訪問(wèn)以來(lái)本地緩存中的文件未被修改,則將使用本地緩存中的文件;
根據(jù)我的經(jīng)驗(yàn),如果可能的話,試著遵循這個(gè)原則為靜態(tài)文件增加過(guò)期時(shí)間,從而大大減少用戶對(duì)服務(wù)器資源的重復(fù)訪問(wèn)。
5) CSS和JS文件在單獨(dú)的外部文件中引用
將CSS和JS文件放在單獨(dú)的文件中,以便它們單獨(dú)緩存,并且在訪問(wèn)其他頁(yè)面時(shí)可以直接從瀏覽器的緩存中讀取。有些網(wǎng)站的主頁(yè)可能是例外。這些主頁(yè)的自瀏覽量可能不大,但這是用戶訪問(wèn)網(wǎng)站的***印象,也是引導(dǎo)用戶訪問(wèn)其他頁(yè)面的起點(diǎn)。這些頁(yè)面本身也可能使用大量Ajax本地刷新和技術(shù)。此時(shí),CSS和JS文件可以直接寫入頁(yè)面中。
在ie中,包含重復(fù)的JS腳本將導(dǎo)致瀏覽器的緩存不被使用。仔細(xì)檢查你的程序。刪除重復(fù)的引用腳本應(yīng)該不難。
除了標(biāo)頭中的人工重定向之外,網(wǎng)頁(yè)重定向通常是無(wú)意中發(fā)生的,重定向的內(nèi)容不會(huì)使用瀏覽器的緩存。例如,當(dāng)用戶正在訪問(wèn)時(shí),服務(wù)器將轉(zhuǎn)到/通過(guò)301,后跟“/”。如果服務(wù)器配置不好,也會(huì)給服務(wù)器帶來(lái)額外的負(fù)擔(dān)。通過(guò)配置Apache的別名或使用Mod_uurewrite模塊和其他方法,可以盡可能避免不必要的重定向。
還有其他一些,例如使用CDN分發(fā)機(jī)制、避免CSS表達(dá)式、避免ETag等。因?yàn)樗鼈儾怀S?,所以這里不再重復(fù)。
經(jīng)過(guò)以上優(yōu)化后,可以嘗試用Yslow測(cè)試網(wǎng)頁(yè)的性能得分,一般可以達(dá)到70分以上。
當(dāng)然,除了對(duì)瀏覽器前端和靜態(tài)內(nèi)容進(jìn)行優(yōu)化外,還對(duì)程序腳本、服務(wù)器、數(shù)據(jù)庫(kù)和加載進(jìn)行了優(yōu)化。這些更深層次的優(yōu)化方法對(duì)技術(shù)有更高的要求。本文的后半部分將重點(diǎn)討論后端優(yōu)化。
如何優(yōu)化網(wǎng)站性能?針對(duì)前后端代碼框架優(yōu)化
2、 后端優(yōu)化
前端優(yōu)化可以盡可能避免對(duì)服務(wù)器和帶寬資源造成不必要的浪費(fèi),但隨著網(wǎng)站訪問(wèn)量的增加,僅靠前端優(yōu)化并不能解決所有問(wèn)題。后端軟件處理并行請(qǐng)求的能力、程序運(yùn)行效率、硬件性能和系統(tǒng)可擴(kuò)展性將成為影響網(wǎng)站性能和穩(wěn)定性的關(guān)鍵瓶頸。為了優(yōu)化系統(tǒng)和程序的性能,我們可以從以下幾個(gè)方面入手:
1) Apache、MySQL等軟件的配置優(yōu)化
雖然安裝后Apache和MySQL等軟件使用的默認(rèn)設(shè)置足以讓您的網(wǎng)站運(yùn)行,但您仍然可以通過(guò)調(diào)整MySQL和Apache的一些系統(tǒng)參數(shù)來(lái)追求更高的效率和穩(wěn)定性。這個(gè)領(lǐng)域有很多專業(yè)的文章和論壇(例如:),為了掌握它,還需要進(jìn)行深入的研究和實(shí)踐,這里不再討論。
Apache是一個(gè)功能齊全但相對(duì)較大的web服務(wù)器。它的資源消耗基本上與同時(shí)運(yùn)行的進(jìn)程數(shù)成正比。它消耗大量服務(wù)器內(nèi)存,通常在處理并行任務(wù)時(shí)效率很高。在某些情況下,我們可以使用輕量級(jí)Web服務(wù)器托管靜態(tài)圖像、樣式表和JavaScript文件。只有這樣,才能大大提高靜態(tài)文件的處理速度,大大減少內(nèi)存占用。我使用的web服務(wù)器是來(lái)自俄羅斯的nginx。其他選項(xiàng)包括lighttpd和thttpd。
當(dāng)前端服務(wù)器不足以應(yīng)付用戶訪問(wèn)時(shí),通過(guò)前端機(jī)實(shí)現(xiàn)web訪問(wèn)的負(fù)載均衡是最快、最可行的方案。通過(guò)apachemod_u2;Proxy可以輕松實(shí)現(xiàn)基于反向代理的負(fù)載平衡。建議使用nginx作為代理服務(wù)器,這比Apache更快。
2) 應(yīng)用緩存技術(shù)提高數(shù)據(jù)庫(kù)效率、文件緩存和分布式緩存
3) 檢查服務(wù)器的運(yùn)行狀態(tài)以查找影響性能的瓶頸
系統(tǒng)優(yōu)化沒(méi)有一勞永逸的方法。我們需要檢測(cè)服務(wù)器的運(yùn)行狀態(tài),及時(shí)發(fā)現(xiàn)影響性能的瓶頸和可能存在的潛在問(wèn)題,因?yàn)榫W(wǎng)站的性能總是取決于桶中的短板??梢跃帉懸恍┠_本來(lái)檢查Web服務(wù)的操作,一些開源軟件也提供了良好的功能
一些技巧和技巧可以幫助你克服目前的困難,但是如果你想讓網(wǎng)站具備應(yīng)對(duì)大規(guī)模訪問(wèn)的能力,你需要從系統(tǒng)架構(gòu)上做一個(gè)周密的規(guī)劃。幸運(yùn)的是,許多前輩無(wú)私地分享了他們的架構(gòu)。
[聲明]本網(wǎng)轉(zhuǎn)載網(wǎng)絡(luò)媒體稿件是為了傳播更多的信息,此類稿件不代表本網(wǎng)觀點(diǎn),本網(wǎng)不承擔(dān)此類稿件侵權(quán)行為的連帶責(zé)任。故此,如果您發(fā)現(xiàn)本網(wǎng)站的內(nèi)容侵犯了您的版權(quán),請(qǐng)您的相關(guān)內(nèi)容發(fā)至此郵箱【779898168@qq.com】,我們?cè)诖_認(rèn)后,會(huì)立即刪除,保證您的版權(quán)。
官網(wǎng)優(yōu)化
整站優(yōu)化
渠道代理
400-655-5776