根據(jù)系統(tǒng)架構(gòu)的設(shè)計(jì)原則-oa頁(yè)面刷新優(yōu)化AJAX

發(fā)布于:2020-03-18 17:42:37

根據(jù)系統(tǒng)架構(gòu)的設(shè)計(jì)原則-oa頁(yè)面刷新優(yōu)化AJAX
根據(jù)系統(tǒng)架構(gòu)的設(shè)計(jì)原則-oa頁(yè)面刷新優(yōu)化AJAX
根據(jù)系統(tǒng)架構(gòu)的設(shè)計(jì)原則,應(yīng)盡量減少頁(yè)面與數(shù)據(jù)庫(kù)的交互以提高性能,其中,AJAX技術(shù)是最為普遍的技術(shù)之一。AJAX技術(shù)的存在,使得用戶不用手動(dòng)刷新頁(yè)面,重新讀取數(shù)據(jù)庫(kù)中該頁(yè)面所有的數(shù)據(jù)元素,而是由系統(tǒng)自動(dòng)刷新頁(yè)面上的某個(gè)元素或某個(gè)區(qū)域,只對(duì)必須刷新的數(shù)據(jù)進(jìn)行讀取,從而最大程度的避免數(shù)據(jù)庫(kù)壓力。
緩存 Ajax“引擎”。Ajax“引擎”可以運(yùn)行在客戶機(jī)而不是在服務(wù)器上,并且在最初加載頁(yè)面時(shí)進(jìn)行下載。這個(gè)引擎包含大量應(yīng)用程序邏輯(以 JavaScript 代碼實(shí)現(xiàn))。盡管它包含了很多應(yīng)用程序邏輯和表示框架元素,但是如果經(jīng)過(guò)恰當(dāng)?shù)脑O(shè)計(jì),它可以不包含任何業(yè)務(wù)數(shù)據(jù)或個(gè)性化內(nèi)容。應(yīng)用程序和表示都凍結(jié)在部署時(shí)。在典型的Web環(huán)境中,應(yīng)用程序資源可能幾個(gè)才會(huì)變更一次。
這意味著負(fù)責(zé)隔離應(yīng)用程序資源和數(shù)據(jù)資源的 Ajax 引擎是高度可緩存的。例如Dojo 提供了構(gòu)建工具來(lái)創(chuàng)建一個(gè)包含所有應(yīng)用程序邏輯、表示和風(fēng)格的壓縮 JavaScript 文件。由于它只是一個(gè)文件,因此 Web 瀏覽器可以對(duì)其進(jìn)行緩存,這意味著第二次訪問(wèn)啟用 Dojo 的 Web 應(yīng)用程序時(shí),很可能就會(huì)從瀏覽器緩存中加載 Ajax,而不是從服務(wù)器上加載它。將這種情況與傳統(tǒng)服務(wù)器端 Web 應(yīng)用程序進(jìn)行一下對(duì)比,后者每次請(qǐng)求都會(huì)導(dǎo)致大量的服務(wù)器處理,因?yàn)闉g覽器和網(wǎng)絡(luò)中介不能對(duì)緩存不斷變化的資源。另外,Ajax 應(yīng)用程序引擎只是一個(gè)文件,所以它是可以使用代理緩存的。在大型的單位內(nèi)部網(wǎng)中,只要有人曾經(jīng)下載過(guò)某個(gè)特定版本的應(yīng)用程序的 Ajax 引擎,其他任何人都可以從內(nèi)部網(wǎng)網(wǎng)關(guān)上上獲取一個(gè)緩存過(guò)的拷貝。因此,對(duì)于應(yīng)用程序資源來(lái)說(shuō),經(jīng)過(guò)良好定義的 Ajax 應(yīng)用程序引擎符合 REST 準(zhǔn)則,與服務(wù)器端 Web 應(yīng)用程序相比,它具有顯著的可伸縮性優(yōu)勢(shì)。
緩存 Ajax 數(shù)據(jù)。由于應(yīng)用程序邏輯和狀態(tài)都在瀏覽器上駐留并執(zhí)行,因此應(yīng)用程序與服務(wù)器的交互就與傳統(tǒng) Web 應(yīng)用程序的方式有很大的不同。不需要獲取混合的內(nèi)容頁(yè)面,只需要獲取業(yè)務(wù)數(shù)據(jù)即可。應(yīng)用程序是動(dòng)態(tài)且高度個(gè)性化的 —— 但是卻不能緩存,也無(wú)法伸縮。考慮到這個(gè)操作在Ajax 版本的應(yīng)用程序中的情況。對(duì)于“最近查看的內(nèi)容” 并不需要進(jìn)行處理。當(dāng)點(diǎn)擊某個(gè)鏈接時(shí),這些在頁(yè)面上已經(jīng)存在的信息并不會(huì)消失。
Ajax 架構(gòu)風(fēng)格的另外一個(gè)優(yōu)點(diǎn)是它可以輕松處理服務(wù)器的故障。傳統(tǒng)有狀態(tài)服務(wù)器端 Web 應(yīng)用程序通常會(huì)在服務(wù)器上保存大量的用戶會(huì)話狀態(tài)。如果服務(wù)器發(fā)生了故障,會(huì)話狀態(tài)就丟失了,那么用戶就會(huì)體驗(yàn)到非常奇怪的瀏覽器行為(自動(dòng)返回主頁(yè)或購(gòu)物車中的東西消失等)。在采用有狀態(tài)客戶機(jī)和無(wú)狀態(tài)服務(wù)的 Ajax 應(yīng)用程序中,服務(wù)器崩潰/重新啟動(dòng)對(duì)于用戶來(lái)說(shuō)都是完全透明的,因?yàn)榉?wù)器崩潰不會(huì)影響會(huì)話狀態(tài),這些都保存在用戶的瀏覽器中;無(wú)狀態(tài)服務(wù)的行為是冪等的,可以由用戶請(qǐng)求的內(nèi)容來(lái)單獨(dú)確定。
 

上一篇:oa總體性能優(yōu)化設(shè)計(jì)方案
下一篇:靜態(tài)SQL技術(shù)-SQL優(yōu)化主要包括以下內(nèi)容