電子商務(wù)公司網(wǎng)站制作性能優(yōu)化
日期 : 2019-01-25 11:03:58
隨著互聯(lián)網(wǎng)、信息技術(shù)、移動(dòng)支付等技術(shù)的飛速發(fā)展,電子商務(wù)行業(yè)也在快速發(fā)展,一時(shí)間涌現(xiàn)了大量的各種各樣的電子商務(wù)網(wǎng)站,包括B2B、B2C以及C2C的。這些網(wǎng)站每天都有成千上萬(wàn)的人訪問(wèn),包含商品瀏覽、購(gòu)買、比價(jià)等,如此高的訪問(wèn)量,必須要優(yōu)化和調(diào)整網(wǎng)站的性能才能保證網(wǎng)站的穩(wěn)定運(yùn)行,給客戶帶來(lái)良好的購(gòu)物與訪問(wèn)體驗(yàn)。優(yōu)化電子商務(wù)網(wǎng)站的性能主要可以通過(guò)硬件升級(jí)、重構(gòu)構(gòu)建、頁(yè)面優(yōu)化、數(shù)據(jù)庫(kù)優(yōu)化等技術(shù)實(shí)現(xiàn),通過(guò)這些技術(shù)優(yōu)化后的電子商務(wù)網(wǎng)站可以最大限度提高系統(tǒng)的高并發(fā)執(zhí)行能力和運(yùn)行效率,從而為更多的在線用戶服務(wù)。
2系統(tǒng)架構(gòu)
多省匯食材網(wǎng)”主要是一個(gè)食材價(jià)格比對(duì)、食材在線銷售的網(wǎng)站,每天自動(dòng)收集各大市場(chǎng)各種食材的價(jià)格,為用戶提供食材比價(jià)的基礎(chǔ),同時(shí)聯(lián)合供應(yīng)商提供食材的在線購(gòu)買和配送服務(wù)。該網(wǎng)站每天數(shù)據(jù)錄人量和訪問(wèn)量巨大,目前的平臺(tái)構(gòu)架和技術(shù)很難支撐現(xiàn)有的業(yè)務(wù)訪問(wèn)量,因此,需要對(duì)其進(jìn)行性能優(yōu)化。本次優(yōu)化方案主要從頁(yè)面優(yōu)化、程序優(yōu)化、數(shù)據(jù)庫(kù)優(yōu)化三個(gè)方面進(jìn)行優(yōu)化升級(jí)。
頁(yè)面優(yōu)化:主要從頁(yè)面元素的布局合理性和HITP請(qǐng)求數(shù)等幾方面進(jìn)行考慮。
程序優(yōu)化:主要在原有系統(tǒng)中引入數(shù)據(jù)緩存技術(shù)和靜態(tài)頁(yè)面生成技術(shù),并同時(shí)配合使用了AJAX技術(shù)對(duì)程序進(jìn)行優(yōu)化;
數(shù)據(jù)庫(kù)優(yōu)化:主要在數(shù)據(jù)庫(kù)的優(yōu)化中對(duì)SQL語(yǔ)句和表進(jìn)行優(yōu)化。
3系統(tǒng)優(yōu)化的實(shí)現(xiàn)
3.1頁(yè)面優(yōu)化
3.1.1減少HTTP請(qǐng)求次數(shù)
Web頁(yè)面包括了各種頁(yè)面元素,例如商品圖像、頁(yè)面樣式表、JS腳本和F1ash動(dòng)畫等,當(dāng)用戶訪問(wèn)頁(yè)面時(shí),瀏覽器需要將這些元素下載到本地進(jìn)行解析展示。當(dāng)HTTP訪問(wèn)次數(shù)過(guò)多,服務(wù)器性能和網(wǎng)絡(luò)帶寬都會(huì)被下載任務(wù)所占用因此,需要減少HTTP的請(qǐng)求次數(shù)。這只是頁(yè)面優(yōu)化的開始,根據(jù)調(diào)査得知電子商務(wù)網(wǎng)站的訪問(wèn)量中有40%-60%屬于首次訪問(wèn),所以加快首次訪問(wèn)的速度是提升用戶購(gòu)物體驗(yàn)的關(guān)鍵。
3.1.2合理設(shè)置頁(yè)面過(guò)期時(shí)間
為了提升用戶的購(gòu)物體驗(yàn)、吸引顧客的目光,電子商務(wù)網(wǎng)站需要將網(wǎng)頁(yè)制作得豐富多彩,增加各種頁(yè)面元素,當(dāng)客戶端第一次訪問(wèn)時(shí),不得不面臨大量的HITP請(qǐng)求,如果沒(méi)有設(shè)置頁(yè)面過(guò)期時(shí)間,當(dāng)用戶下次訪問(wèn)時(shí),又得再次提交重復(fù)的HITP請(qǐng)求,設(shè)置了頁(yè)面過(guò)期時(shí)間后客戶端就會(huì)將這些資源緩存下來(lái),當(dāng)客戶下次訪問(wèn)時(shí)客戶端就可以使用本地緩存的資源來(lái)展示頁(yè)面,從而減少HTTP請(qǐng)求的次數(shù)和大小使得網(wǎng)頁(yè)加載速度變快。但是頁(yè)面的過(guò)期時(shí)間設(shè)置過(guò)大,客戶端會(huì)一直緩存之前的資源,當(dāng)用戶訪問(wèn)網(wǎng)站時(shí)不再繼續(xù)下載新的資源文件,頁(yè)面將會(huì)過(guò)時(shí)甚至無(wú)法顯示,因此,設(shè)置合理的頁(yè)面過(guò)期時(shí)間很重要。
3.1.3壓縮頁(yè)面元素
頁(yè)面上的很多元素基本都是圖片、樣式和JS,這些文件的壓縮比都很大,經(jīng)過(guò)壓縮可以減少體積、加快網(wǎng)絡(luò)傳輸時(shí)間,客戶端在收到壓縮后的文件后再進(jìn)行解壓獲得原來(lái)的文件,將負(fù)載壓力從服務(wù)器端轉(zhuǎn)移到客戶端,從而提高服務(wù)器的響應(yīng)時(shí)間。HTTP/1.1的標(biāo)準(zhǔn)中Web客戶端的HTP請(qǐng)求中可以通過(guò)設(shè)置 Accept- Encoding頭來(lái)表明支持的壓縮類型。
客戶端瀏覽器在訪問(wèn)頁(yè)面時(shí)根據(jù)頁(yè)面頭設(shè)置的文件類型來(lái)決定是否壓縮。如果需要壓縮,則將HIML文件、CSS文件和JS文件、圖片文件等進(jìn)行壓縮,通過(guò)壓縮HTTP響應(yīng)內(nèi)容可減少頁(yè)面響應(yīng)時(shí)間。
3.1.4合理放置樣式表和腳本文件
客戶在訪問(wèn)一個(gè)頁(yè)面時(shí)首先看到的是頁(yè)面的效果,然后才會(huì)移動(dòng)鼠標(biāo)觸發(fā)頁(yè)面的特效,根據(jù)這一用戶習(xí)慣,可以將CSS樣式表放在HTML的頭部,將JS引入文件放在頁(yè)面的底部,這是因?yàn)闉g覽器解析HIML文件采用的是順序執(zhí)行方式,這樣由于CSS文件以及樣式表在頭部可以讓頁(yè)面的布局和展示很快展示在用戶眼前,提高客戶訪問(wèn)頁(yè)面的友好度、提升購(gòu)物體驗(yàn)。將JS文件放在底部是因?yàn)楫?dāng)所有頁(yè)面都加載完畢后才開始加載JS特效,當(dāng)用戶點(diǎn)擊特效時(shí)JS已加載完畢,這樣可以利用客戶的時(shí)間差來(lái)增加頁(yè)面加載的時(shí)間。
3.1.5把 Javascript和CSS放到外部文件中
電商網(wǎng)站中的頁(yè)面數(shù)量很多,如果每個(gè)頁(yè)面中都寫入JS和CSS文件必將導(dǎo)致HIML文件過(guò)大,因此,可將Javascript和CSS放入幾個(gè)單獨(dú)的外部文件封裝起來(lái),然后在頁(yè)面中導(dǎo)人,這樣做的明顯好處有兩個(gè):第一,可以方便代碼的管理、維護(hù),如果將 Javascript、CSS和頁(yè)面代碼起寫人頁(yè)面中,那頁(yè)面代碼將會(huì)相當(dāng)宏大并且雜亂,維護(hù)起來(lái)將很繁瑣艱難;第二,使用外部文件會(huì)加快頁(yè)面顯示速度,因?yàn)橥獠课募?huì)被瀏覽器緩存,這在多次訪問(wèn)時(shí)可大大加快訪問(wèn)速度。
3.2程序優(yōu)化
2.1頁(yè)面靜態(tài)化
動(dòng)態(tài)網(wǎng)頁(yè)需要執(zhí)行拼接等操作,耗時(shí)較大。而客戶訪問(wèn)最多的就是商品詳細(xì)頁(yè)面,每一種商品的詳細(xì)頁(yè)面在生成過(guò)后不經(jīng)過(guò)人為操作是不會(huì)發(fā)生變化的,因此,可以將商品詳情頁(yè)面進(jìn)行靜態(tài)化以加快服務(wù)器的響應(yīng)時(shí)間。對(duì)于商品詳情頁(yè)在添加完商品保存后將該頁(yè)面進(jìn)行靜態(tài)化,對(duì)于其他頁(yè)面當(dāng)客戶第一次訪問(wèn)該頁(yè)面時(shí),后臺(tái)服務(wù)程序首先檢査該頁(yè)面是否有靜態(tài)頁(yè)面,如果有直接返回,如果沒(méi)有則生成靜態(tài)頁(yè)面,并更改該頁(yè)面的訪問(wèn)路徑,當(dāng)下次訪問(wèn)時(shí)直接返回該頁(yè)面的靜態(tài)頁(yè)面。
2.2AJAK提交
在價(jià)格公告模塊中,當(dāng)用戶選擇一個(gè)商品后,只需用選擇商品價(jià)格時(shí)間查找價(jià)格,點(diǎn)擊查找后整個(gè)商品詳情頁(yè)面不會(huì)改變,發(fā)生改變的只有商品的價(jià)格屬性,所以不需要重新請(qǐng)求并刷新整個(gè)頁(yè)面,可以使用AJAX提交局部刷新請(qǐng)求,減少網(wǎng)絡(luò)訪問(wèn)次數(shù),提高頁(yè)面的流暢度,價(jià)格數(shù)據(jù)更新快速,用戶體驗(yàn)更加快捷流暢.
3數(shù)據(jù)庫(kù)優(yōu)化
3.1SQ工L語(yǔ)句的優(yōu)化
本系統(tǒng)數(shù)據(jù)庫(kù)使用 MYSQL5.0,對(duì)SQL語(yǔ)句進(jìn)行的優(yōu)化將基于此數(shù)據(jù)庫(kù)來(lái)展開。在本系統(tǒng)中優(yōu)化SQ工L語(yǔ)句的步驟是:首先運(yùn)用 show status命令了解各種SQL的執(zhí)行頻率然后定位到執(zhí)行效率較低的SQL語(yǔ)句,通過(guò) explain命令來(lái)分析低效的SQL的執(zhí)行計(jì)劃,然后根據(jù)出現(xiàn)的問(wèn)題采取相應(yīng)的優(yōu)化方法。
(1)使用索引:增加索引可以減少檢索的時(shí)間,可以在經(jīng)常查詢的字段上增加索引,但是增加了索引之后對(duì)于數(shù)據(jù)的修改性能會(huì)有影響,這是增加索引需要額外注意的事項(xiàng)。在本系統(tǒng)中在用戶的用戶名和密碼與商品的名稱上增加索引,以提高用戶登錄的速度和查找商品的速度。
(2)使用 analyze和 check table 1命令定期分析和檢查表。
(3)定期優(yōu)化表,電商系統(tǒng)中的商品表和商品推薦表等在經(jīng)過(guò)了很多次的訪問(wèn)以及修改后存在很多碎片,此時(shí)使用 optimize table命令來(lái)對(duì)數(shù)據(jù)表中的空間碎片進(jìn)行整理與合并,以減少空間的浪費(fèi)和提高操作的效率。
(4)優(yōu)化SQL部分語(yǔ)句,導(dǎo)入大批量數(shù)據(jù)時(shí),使用load data infile i命令可有效提高導(dǎo)入效率,使用索引來(lái)滿足order by子句將不需要額外的排序,對(duì)于嵌套査詢,有些情況下用JON來(lái)代替子?xùn)嗽儗?huì)得到更高的效率。
3.3.2通過(guò)拆分表提高訪問(wèn)效率
在本銷售系統(tǒng)中,有一模塊叫“商品推薦模塊”,本模塊主要是當(dāng)客戶查看或者購(gòu)買一個(gè)商品后系統(tǒng)需要關(guān)聯(lián)類似的商品,在用戶下次登錄時(shí)進(jìn)行推薦。
由于客戶每次點(diǎn)擊一種商品都會(huì)進(jìn)行關(guān)聯(lián),如果一個(gè)用戶每天點(diǎn)擊10個(gè)商品,每天有500個(gè)客戶,那么一個(gè)月表里將會(huì)有15萬(wàn)條記錄,如果每個(gè)用戶登錄時(shí)都在這個(gè)表里進(jìn)行關(guān)聯(lián)商品的話,那將會(huì)出現(xiàn)速度緩慢的情況。這里將采用分表的方法來(lái)提高査詢效率,將一個(gè)月按時(shí)間分成三部分,記錄分別存放在三個(gè)表里,如1711表示2017年1月第部分的記錄,由于用戶下次再登錄網(wǎng)站購(gòu)買商品多為10天以內(nèi)的用戶,大部分用戶都會(huì)在最近表里命中,故這樣可以有效提高記錄的命中率,提高數(shù)據(jù)査詢的性能。
系統(tǒng)性能測(cè)試
4.1用AB進(jìn)行性能測(cè)試
首先,利用AB對(duì)優(yōu)化后的網(wǎng)站進(jìn)行性能考察,運(yùn)行命令為ab-c50-n1000http://localhost/(虛擬50個(gè)用戶并發(fā)執(zhí)行1000次訪問(wèn))。
測(cè)試結(jié)果來(lái)看,經(jīng)過(guò)優(yōu)化后的電子商務(wù)網(wǎng)站的服務(wù)器負(fù)載能力有了一定的提升,由原來(lái)每秒只能響應(yīng)62.11個(gè)用戶請(qǐng)求提高到了75.21個(gè),并且50%的用戶請(qǐng)求在656ms內(nèi)得到了響應(yīng)。
4.2用 Webload進(jìn)行性能測(cè)試
用 Webload對(duì)整個(gè)網(wǎng)站進(jìn)行測(cè)試,首先啟錄制操作腳本,然后通過(guò)腳本建立壓力測(cè)試模板,接著進(jìn)行壓力測(cè)試,在“多省匯食材網(wǎng)”的壓力測(cè)試中,模擬現(xiàn)實(shí)中的用戶對(duì)頁(yè)面進(jìn)行的一系列操作,壓力測(cè)試運(yùn)行時(shí)間為8分鐘。通過(guò)測(cè)試比較,將關(guān)鍵參數(shù)取出來(lái)對(duì)比。
可以看出,在8分鐘的壓力測(cè)試中,同樣的并發(fā)訪問(wèn)量,優(yōu)化后平均每個(gè)頁(yè)面返回時(shí)間少了0.321秒,在480秒內(nèi)優(yōu)化后可以多返回331個(gè)頁(yè)面,平均每秒多返回0.872個(gè)頁(yè)面,點(diǎn)擊數(shù)量也每秒增多了5.008次。
電子商務(wù)網(wǎng)站制作系統(tǒng)的優(yōu)化是一個(gè)動(dòng)態(tài)化的工作,本文主要從前臺(tái)頁(yè)面,數(shù)據(jù)庫(kù)等方面對(duì)網(wǎng)站進(jìn)行了優(yōu)化,并做了測(cè)試,達(dá)到了預(yù)期的目標(biāo),此外時(shí)優(yōu)化有很多方法,如建立多服務(wù)器群組進(jìn)行負(fù)載均衡、CDN( Content Delivery Netw ork,內(nèi)容分發(fā)網(wǎng)絡(luò))的應(yīng)用等,將會(huì)在更進(jìn)一步的優(yōu)化工作中得到應(yīng)用。
2系統(tǒng)架構(gòu)
多省匯食材網(wǎng)”主要是一個(gè)食材價(jià)格比對(duì)、食材在線銷售的網(wǎng)站,每天自動(dòng)收集各大市場(chǎng)各種食材的價(jià)格,為用戶提供食材比價(jià)的基礎(chǔ),同時(shí)聯(lián)合供應(yīng)商提供食材的在線購(gòu)買和配送服務(wù)。該網(wǎng)站每天數(shù)據(jù)錄人量和訪問(wèn)量巨大,目前的平臺(tái)構(gòu)架和技術(shù)很難支撐現(xiàn)有的業(yè)務(wù)訪問(wèn)量,因此,需要對(duì)其進(jìn)行性能優(yōu)化。本次優(yōu)化方案主要從頁(yè)面優(yōu)化、程序優(yōu)化、數(shù)據(jù)庫(kù)優(yōu)化三個(gè)方面進(jìn)行優(yōu)化升級(jí)。
頁(yè)面優(yōu)化:主要從頁(yè)面元素的布局合理性和HITP請(qǐng)求數(shù)等幾方面進(jìn)行考慮。
程序優(yōu)化:主要在原有系統(tǒng)中引入數(shù)據(jù)緩存技術(shù)和靜態(tài)頁(yè)面生成技術(shù),并同時(shí)配合使用了AJAX技術(shù)對(duì)程序進(jìn)行優(yōu)化;
數(shù)據(jù)庫(kù)優(yōu)化:主要在數(shù)據(jù)庫(kù)的優(yōu)化中對(duì)SQL語(yǔ)句和表進(jìn)行優(yōu)化。
3系統(tǒng)優(yōu)化的實(shí)現(xiàn)
3.1頁(yè)面優(yōu)化
3.1.1減少HTTP請(qǐng)求次數(shù)
Web頁(yè)面包括了各種頁(yè)面元素,例如商品圖像、頁(yè)面樣式表、JS腳本和F1ash動(dòng)畫等,當(dāng)用戶訪問(wèn)頁(yè)面時(shí),瀏覽器需要將這些元素下載到本地進(jìn)行解析展示。當(dāng)HTTP訪問(wèn)次數(shù)過(guò)多,服務(wù)器性能和網(wǎng)絡(luò)帶寬都會(huì)被下載任務(wù)所占用因此,需要減少HTTP的請(qǐng)求次數(shù)。這只是頁(yè)面優(yōu)化的開始,根據(jù)調(diào)査得知電子商務(wù)網(wǎng)站的訪問(wèn)量中有40%-60%屬于首次訪問(wèn),所以加快首次訪問(wèn)的速度是提升用戶購(gòu)物體驗(yàn)的關(guān)鍵。
3.1.2合理設(shè)置頁(yè)面過(guò)期時(shí)間
為了提升用戶的購(gòu)物體驗(yàn)、吸引顧客的目光,電子商務(wù)網(wǎng)站需要將網(wǎng)頁(yè)制作得豐富多彩,增加各種頁(yè)面元素,當(dāng)客戶端第一次訪問(wèn)時(shí),不得不面臨大量的HITP請(qǐng)求,如果沒(méi)有設(shè)置頁(yè)面過(guò)期時(shí)間,當(dāng)用戶下次訪問(wèn)時(shí),又得再次提交重復(fù)的HITP請(qǐng)求,設(shè)置了頁(yè)面過(guò)期時(shí)間后客戶端就會(huì)將這些資源緩存下來(lái),當(dāng)客戶下次訪問(wèn)時(shí)客戶端就可以使用本地緩存的資源來(lái)展示頁(yè)面,從而減少HTTP請(qǐng)求的次數(shù)和大小使得網(wǎng)頁(yè)加載速度變快。但是頁(yè)面的過(guò)期時(shí)間設(shè)置過(guò)大,客戶端會(huì)一直緩存之前的資源,當(dāng)用戶訪問(wèn)網(wǎng)站時(shí)不再繼續(xù)下載新的資源文件,頁(yè)面將會(huì)過(guò)時(shí)甚至無(wú)法顯示,因此,設(shè)置合理的頁(yè)面過(guò)期時(shí)間很重要。
3.1.3壓縮頁(yè)面元素
頁(yè)面上的很多元素基本都是圖片、樣式和JS,這些文件的壓縮比都很大,經(jīng)過(guò)壓縮可以減少體積、加快網(wǎng)絡(luò)傳輸時(shí)間,客戶端在收到壓縮后的文件后再進(jìn)行解壓獲得原來(lái)的文件,將負(fù)載壓力從服務(wù)器端轉(zhuǎn)移到客戶端,從而提高服務(wù)器的響應(yīng)時(shí)間。HTTP/1.1的標(biāo)準(zhǔn)中Web客戶端的HTP請(qǐng)求中可以通過(guò)設(shè)置 Accept- Encoding頭來(lái)表明支持的壓縮類型。
客戶端瀏覽器在訪問(wèn)頁(yè)面時(shí)根據(jù)頁(yè)面頭設(shè)置的文件類型來(lái)決定是否壓縮。如果需要壓縮,則將HIML文件、CSS文件和JS文件、圖片文件等進(jìn)行壓縮,通過(guò)壓縮HTTP響應(yīng)內(nèi)容可減少頁(yè)面響應(yīng)時(shí)間。
3.1.4合理放置樣式表和腳本文件
客戶在訪問(wèn)一個(gè)頁(yè)面時(shí)首先看到的是頁(yè)面的效果,然后才會(huì)移動(dòng)鼠標(biāo)觸發(fā)頁(yè)面的特效,根據(jù)這一用戶習(xí)慣,可以將CSS樣式表放在HTML的頭部,將JS引入文件放在頁(yè)面的底部,這是因?yàn)闉g覽器解析HIML文件采用的是順序執(zhí)行方式,這樣由于CSS文件以及樣式表在頭部可以讓頁(yè)面的布局和展示很快展示在用戶眼前,提高客戶訪問(wèn)頁(yè)面的友好度、提升購(gòu)物體驗(yàn)。將JS文件放在底部是因?yàn)楫?dāng)所有頁(yè)面都加載完畢后才開始加載JS特效,當(dāng)用戶點(diǎn)擊特效時(shí)JS已加載完畢,這樣可以利用客戶的時(shí)間差來(lái)增加頁(yè)面加載的時(shí)間。
3.1.5把 Javascript和CSS放到外部文件中
電商網(wǎng)站中的頁(yè)面數(shù)量很多,如果每個(gè)頁(yè)面中都寫入JS和CSS文件必將導(dǎo)致HIML文件過(guò)大,因此,可將Javascript和CSS放入幾個(gè)單獨(dú)的外部文件封裝起來(lái),然后在頁(yè)面中導(dǎo)人,這樣做的明顯好處有兩個(gè):第一,可以方便代碼的管理、維護(hù),如果將 Javascript、CSS和頁(yè)面代碼起寫人頁(yè)面中,那頁(yè)面代碼將會(huì)相當(dāng)宏大并且雜亂,維護(hù)起來(lái)將很繁瑣艱難;第二,使用外部文件會(huì)加快頁(yè)面顯示速度,因?yàn)橥獠课募?huì)被瀏覽器緩存,這在多次訪問(wèn)時(shí)可大大加快訪問(wèn)速度。
3.2程序優(yōu)化
2.1頁(yè)面靜態(tài)化
動(dòng)態(tài)網(wǎng)頁(yè)需要執(zhí)行拼接等操作,耗時(shí)較大。而客戶訪問(wèn)最多的就是商品詳細(xì)頁(yè)面,每一種商品的詳細(xì)頁(yè)面在生成過(guò)后不經(jīng)過(guò)人為操作是不會(huì)發(fā)生變化的,因此,可以將商品詳情頁(yè)面進(jìn)行靜態(tài)化以加快服務(wù)器的響應(yīng)時(shí)間。對(duì)于商品詳情頁(yè)在添加完商品保存后將該頁(yè)面進(jìn)行靜態(tài)化,對(duì)于其他頁(yè)面當(dāng)客戶第一次訪問(wèn)該頁(yè)面時(shí),后臺(tái)服務(wù)程序首先檢査該頁(yè)面是否有靜態(tài)頁(yè)面,如果有直接返回,如果沒(méi)有則生成靜態(tài)頁(yè)面,并更改該頁(yè)面的訪問(wèn)路徑,當(dāng)下次訪問(wèn)時(shí)直接返回該頁(yè)面的靜態(tài)頁(yè)面。
2.2AJAK提交
在價(jià)格公告模塊中,當(dāng)用戶選擇一個(gè)商品后,只需用選擇商品價(jià)格時(shí)間查找價(jià)格,點(diǎn)擊查找后整個(gè)商品詳情頁(yè)面不會(huì)改變,發(fā)生改變的只有商品的價(jià)格屬性,所以不需要重新請(qǐng)求并刷新整個(gè)頁(yè)面,可以使用AJAX提交局部刷新請(qǐng)求,減少網(wǎng)絡(luò)訪問(wèn)次數(shù),提高頁(yè)面的流暢度,價(jià)格數(shù)據(jù)更新快速,用戶體驗(yàn)更加快捷流暢.
3數(shù)據(jù)庫(kù)優(yōu)化
3.1SQ工L語(yǔ)句的優(yōu)化
本系統(tǒng)數(shù)據(jù)庫(kù)使用 MYSQL5.0,對(duì)SQL語(yǔ)句進(jìn)行的優(yōu)化將基于此數(shù)據(jù)庫(kù)來(lái)展開。在本系統(tǒng)中優(yōu)化SQ工L語(yǔ)句的步驟是:首先運(yùn)用 show status命令了解各種SQL的執(zhí)行頻率然后定位到執(zhí)行效率較低的SQL語(yǔ)句,通過(guò) explain命令來(lái)分析低效的SQL的執(zhí)行計(jì)劃,然后根據(jù)出現(xiàn)的問(wèn)題采取相應(yīng)的優(yōu)化方法。
(1)使用索引:增加索引可以減少檢索的時(shí)間,可以在經(jīng)常查詢的字段上增加索引,但是增加了索引之后對(duì)于數(shù)據(jù)的修改性能會(huì)有影響,這是增加索引需要額外注意的事項(xiàng)。在本系統(tǒng)中在用戶的用戶名和密碼與商品的名稱上增加索引,以提高用戶登錄的速度和查找商品的速度。
(2)使用 analyze和 check table 1命令定期分析和檢查表。
(3)定期優(yōu)化表,電商系統(tǒng)中的商品表和商品推薦表等在經(jīng)過(guò)了很多次的訪問(wèn)以及修改后存在很多碎片,此時(shí)使用 optimize table命令來(lái)對(duì)數(shù)據(jù)表中的空間碎片進(jìn)行整理與合并,以減少空間的浪費(fèi)和提高操作的效率。
(4)優(yōu)化SQL部分語(yǔ)句,導(dǎo)入大批量數(shù)據(jù)時(shí),使用load data infile i命令可有效提高導(dǎo)入效率,使用索引來(lái)滿足order by子句將不需要額外的排序,對(duì)于嵌套査詢,有些情況下用JON來(lái)代替子?xùn)嗽儗?huì)得到更高的效率。
3.3.2通過(guò)拆分表提高訪問(wèn)效率
在本銷售系統(tǒng)中,有一模塊叫“商品推薦模塊”,本模塊主要是當(dāng)客戶查看或者購(gòu)買一個(gè)商品后系統(tǒng)需要關(guān)聯(lián)類似的商品,在用戶下次登錄時(shí)進(jìn)行推薦。
由于客戶每次點(diǎn)擊一種商品都會(huì)進(jìn)行關(guān)聯(lián),如果一個(gè)用戶每天點(diǎn)擊10個(gè)商品,每天有500個(gè)客戶,那么一個(gè)月表里將會(huì)有15萬(wàn)條記錄,如果每個(gè)用戶登錄時(shí)都在這個(gè)表里進(jìn)行關(guān)聯(lián)商品的話,那將會(huì)出現(xiàn)速度緩慢的情況。這里將采用分表的方法來(lái)提高査詢效率,將一個(gè)月按時(shí)間分成三部分,記錄分別存放在三個(gè)表里,如1711表示2017年1月第部分的記錄,由于用戶下次再登錄網(wǎng)站購(gòu)買商品多為10天以內(nèi)的用戶,大部分用戶都會(huì)在最近表里命中,故這樣可以有效提高記錄的命中率,提高數(shù)據(jù)査詢的性能。
系統(tǒng)性能測(cè)試
4.1用AB進(jìn)行性能測(cè)試
首先,利用AB對(duì)優(yōu)化后的網(wǎng)站進(jìn)行性能考察,運(yùn)行命令為ab-c50-n1000http://localhost/(虛擬50個(gè)用戶并發(fā)執(zhí)行1000次訪問(wèn))。
測(cè)試結(jié)果來(lái)看,經(jīng)過(guò)優(yōu)化后的電子商務(wù)網(wǎng)站的服務(wù)器負(fù)載能力有了一定的提升,由原來(lái)每秒只能響應(yīng)62.11個(gè)用戶請(qǐng)求提高到了75.21個(gè),并且50%的用戶請(qǐng)求在656ms內(nèi)得到了響應(yīng)。
4.2用 Webload進(jìn)行性能測(cè)試
用 Webload對(duì)整個(gè)網(wǎng)站進(jìn)行測(cè)試,首先啟錄制操作腳本,然后通過(guò)腳本建立壓力測(cè)試模板,接著進(jìn)行壓力測(cè)試,在“多省匯食材網(wǎng)”的壓力測(cè)試中,模擬現(xiàn)實(shí)中的用戶對(duì)頁(yè)面進(jìn)行的一系列操作,壓力測(cè)試運(yùn)行時(shí)間為8分鐘。通過(guò)測(cè)試比較,將關(guān)鍵參數(shù)取出來(lái)對(duì)比。
可以看出,在8分鐘的壓力測(cè)試中,同樣的并發(fā)訪問(wèn)量,優(yōu)化后平均每個(gè)頁(yè)面返回時(shí)間少了0.321秒,在480秒內(nèi)優(yōu)化后可以多返回331個(gè)頁(yè)面,平均每秒多返回0.872個(gè)頁(yè)面,點(diǎn)擊數(shù)量也每秒增多了5.008次。
電子商務(wù)網(wǎng)站制作系統(tǒng)的優(yōu)化是一個(gè)動(dòng)態(tài)化的工作,本文主要從前臺(tái)頁(yè)面,數(shù)據(jù)庫(kù)等方面對(duì)網(wǎng)站進(jìn)行了優(yōu)化,并做了測(cè)試,達(dá)到了預(yù)期的目標(biāo),此外時(shí)優(yōu)化有很多方法,如建立多服務(wù)器群組進(jìn)行負(fù)載均衡、CDN( Content Delivery Netw ork,內(nèi)容分發(fā)網(wǎng)絡(luò))的應(yīng)用等,將會(huì)在更進(jìn)一步的優(yōu)化工作中得到應(yīng)用。