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