一、在客戶端運(yùn)行腳本
腳本可以在客戶端和服務(wù)器端運(yùn)行,很容易區(qū)分客戶端腳本和服務(wù)器端腳本,這是完全不同的操作。客戶端腳本是在客戶端計(jì)算機(jī)上運(yùn)行的腳本程序。它的運(yùn)行環(huán)境是客戶端的Web瀏覽器;而服務(wù)器端腳本是在服務(wù)器計(jì)算機(jī)上運(yùn)行的腳本程序。它的運(yùn)行環(huán)境是Web服務(wù)器軟件。對(duì)于是在客戶端還是在服務(wù)器端運(yùn)行腳本這個(gè)問(wèn)題,對(duì)于每種類型的腳本,答案是不同的,并且取決于一些基本因素。到目前為止編寫(xiě)的大多數(shù)程序可能都有一個(gè)隱含的假設(shè),即程序的每一行都在同一臺(tái)計(jì)算機(jī)上運(yùn)行。如果腳本在兩臺(tái)不同的計(jì)算機(jī)上運(yùn)行,則Web 應(yīng)用程序無(wú)法從單個(gè)處理器執(zhí)行。無(wú)疑,多個(gè)處理器可以同時(shí)完成程序的任務(wù),帶來(lái)更高的效率。
那么,哪些因素決定了在哪臺(tái)計(jì)算機(jī)上運(yùn)行特定腳本呢?其中一個(gè)主要原則是,如果一個(gè)腳本可以在客戶端運(yùn)行,那么它應(yīng)該由客戶端來(lái)完成。因?yàn)榭蛻舳擞?jì)算機(jī)和服務(wù)器都為在Web 服務(wù)器上執(zhí)行的計(jì)算付費(fèi)。另一方面,如果計(jì)算任務(wù)在客戶端計(jì)算機(jī)上完成,客戶端和服務(wù)器都不需要花費(fèi)太多?;谶@種經(jīng)濟(jì)上的考慮,凡是可以下載到客戶端計(jì)算機(jī)的任務(wù),都應(yīng)該由客戶端來(lái)完成。
例如,在身份驗(yàn)證的例子中,在將表單中的數(shù)據(jù)傳輸?shù)椒?wù)器之前完成表單中個(gè)人資料是否滿足限制規(guī)則的驗(yàn)證??梢韵胂螅绻?00個(gè)用戶同時(shí)向服務(wù)器提交表單填寫(xiě)的信息,如果不是在客戶端而是在服務(wù)器端,那么分布在100臺(tái)客戶端電腦上的計(jì)算時(shí)間會(huì)相對(duì)少很多.客戶端和服務(wù)器都樂(lè)于這樣做。如果一項(xiàng)任務(wù)只能在客戶端完成,則必須使用客戶端腳本來(lái)完成。這個(gè)道理很明顯。一般來(lái)說(shuō),只能在客戶端完成的腳本是那些使用僅存在于客戶端瀏覽器中的內(nèi)部對(duì)象的腳本。例如, 用于控制用戶查看的窗口或文檔的對(duì)象。其他的腳本可能在客戶端和服務(wù)器端都可以運(yùn)行,所以你可以按照這個(gè)原則來(lái)決定腳本在哪里運(yùn)行。二、在服務(wù)器端運(yùn)行腳本
使用服務(wù)器端腳本來(lái)完成某項(xiàng)任務(wù)需要考慮如何使Web應(yīng)用程序盡可能快地響應(yīng)。客戶端和服務(wù)器計(jì)算機(jī)之間的Internet 連接通常是一個(gè)非常狹窄的通道。如果使用客戶端腳本來(lái)完成一項(xiàng)任務(wù)意味著用大量的數(shù)據(jù)填充通道而只節(jié)省Web_server 上少量的計(jì)算時(shí)間,那么Web 應(yīng)用程序的響應(yīng)將非常緩慢,例如,當(dāng)您需要收集數(shù)據(jù)時(shí)來(lái)自大型數(shù)據(jù)庫(kù)的信息,雖然可以使用客戶端腳本來(lái)操作數(shù)據(jù)庫(kù)和收集信息,但最好使用服務(wù)器端腳本,因?yàn)檫@只允許通過(guò)HTTP 將那些關(guān)鍵和必要的信息發(fā)送到服務(wù)器連接??蛻簟?
如果一個(gè)任務(wù)只能在服務(wù)器端完成,那么它必須使用服務(wù)器端腳本來(lái)完成。如果一個(gè)任務(wù)需要使用內(nèi)置對(duì)象,這個(gè)任務(wù)只能在服務(wù)器端完成,因?yàn)閮?nèi)置對(duì)象只存在于服務(wù)器端。僅存在于服務(wù)器環(huán)境中的內(nèi)置對(duì)象,如Session對(duì)象,是一種數(shù)據(jù)對(duì)象,其中可以存儲(chǔ)有關(guān)用戶會(huì)話(two.ion)的信息。只要Web 應(yīng)用程序中的頁(yè)面仍在使用中,信息就可以永久保留。例如,您可以使用Sessi 對(duì)象為用戶提供類似于“購(gòu)物車”的功能。如果Web 應(yīng)用程序向客戶端提供購(gòu)物場(chǎng)所。將Session 對(duì)象保存在服務(wù)3 上后,客戶端有時(shí)會(huì)獲得一個(gè)特殊頁(yè)面,其中列出了所有選定的對(duì)象。使用服務(wù)器端腳本也有安全考慮。有時(shí)您可能不想公開(kāi)腳本代碼。如果在HTML文檔中嵌入客戶端腳本,所有訪問(wèn)者都可以看到,并使用服務(wù)器端腳本將那些需要保密的腳本作為服務(wù)器端腳本;將它們存儲(chǔ)在網(wǎng)絡(luò)服務(wù)器上。
此外,有時(shí)腳本代碼可能包含有關(guān)Web 應(yīng)用程序的關(guān)鍵信息。如果信息被他人竊取,則可能會(huì)攻擊網(wǎng)站。例如,如果信用卡數(shù)據(jù)庫(kù)的計(jì)算機(jī)名和數(shù)據(jù)庫(kù)名被泄露,那么數(shù)據(jù)庫(kù)服務(wù)器就成為一個(gè)明顯的外部攻擊目標(biāo),Blade 9 就非常危險(xiǎn)。任何客戶端腳本都可以被其他人查看和分析,而服務(wù)器端腳本在這一點(diǎn)上是足夠安全的。考慮在何處運(yùn)行腳本的最后一個(gè)因素是任務(wù)的難度。通常,客戶端系統(tǒng)比服務(wù)器小得多,速度也慢得多。因此,在使用客戶端腳本時(shí),需要考慮任務(wù)能否在一定的可容忍時(shí)間內(nèi)由客戶端系統(tǒng)完成。例如,最好不要讓客戶端系統(tǒng)去完成需要復(fù)雜的人工智能技術(shù)的任務(wù),因?yàn)檫@個(gè)任務(wù)很可能會(huì)拖慢客戶端計(jì)算機(jī)的速度,并且對(duì)服務(wù)器沒(méi)有影響。
用于完成復(fù)雜任務(wù)的腳本很可能包含大量代碼,這意味著需要通過(guò)Internet 向客戶端發(fā)送大量額外的文本代碼。
我們專注高端建站,小程序開(kāi)發(fā)、軟件系統(tǒng)定制開(kāi)發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開(kāi)發(fā)、各類API接口對(duì)接開(kāi)發(fā)等。十余年開(kāi)發(fā)經(jīng)驗(yàn),每一個(gè)項(xiàng)目承諾做到滿意為止,多一次對(duì)比,一定讓您多一份收獲!