Common Gateway Interface

Common Gateway Interface

Common Gateway Interface(CGI),通用網關接口,是網際網路上網頁內容生成與套用的標準技術;CGI為網路伺服器與網頁內容生成套用間作媒介。這些程式被稱為CGI Scripts或CGIs,通常以腳本語言編纂,但亦可以任何程式語言撰寫。

簡介

Common Gateway Interface(CGI——通用網關接口)

用於初始化軟體服務的伺服器方接口。這套接口描述了Web伺服器與同一計算機上的軟體的通信方式。也是一種重要的網際網路技術,可以讓一個客戶端從網頁瀏覽器向在執行在Web伺服器上的程式請求數據。CGI描述了客戶端和這個程式之間傳輸數據的一種標準。

開發背景

最初,CGI是在1993年由美國國家超級電腦套用中心(NCSA)為 NCSA HTTPd web 伺服器開發的。這個WEB伺服器使用了 UNIX shell 環境變數 來保存從Web伺服器傳遞出去的參數,然後生成一個運行CGI的獨立的進程。

程式語言 Perl 是一個廣泛被用途為 CGI 的一個語言,但CGI的一個目的是要獨立於任何語言的。Web伺服器無須在這個問題上對語言有任何了解。 事實上,CGI程式可以用任何腳本語言 或者是完全獨立程式語言,只要這個語言可以在這個系統上運行。除Perl外,像Unix shell scripts, Python, Ruby, PHP, Tcl, C/C++, 和Visual Basic都可以用來寫CGI。

實現wiki的程式

實現wiki的程式就是CGI程式的一個例子:首先用戶代理程式向這個CGI程式請求某個名稱的條目,如果該條目頁面存在,CGI程式就會去獲取那個條目頁面的原始數據,然後把它轉換成HTML並把結果輸出給瀏覽器;如果該條目頁面不存在,CGI程式則會提示用戶新建一個頁面。所有的WIKI操作都是通過這個程式來處理的。

CGI的工作方式,從Web伺服器的角度看,是在特定的位置(比如,http://www.example.com/wiki.cgi)定義了可以運行CGI程式。當收到一個匹配URL的請求,相應的程式就會被調用,並將客戶端傳送的數據作為輸入。程式的輸出會由Web伺服器收集,並加上合適的頭,再傳送回客戶端。

總結

因為這個技術一般每次CGI請求都需要新生成一個程式的副本來運行,這樣大的工作量會很快將伺服器壓垮,因此一些更有效的技術像mod_perl,可以讓腳本解釋器直接作為模組集成在Web伺服器中,這樣就能避免重複載入和初始化解釋器。不過這只是就那些需要解釋器的高級語言(即解釋語言)而言的,使用諸如C一類的編譯語言則可以避免這種額外負荷。由於C及其他編譯語言的程式與解釋語言程式相比,前者的運行速度更快、對作業系統的負荷更小,使用編譯語言程式是可能達到更高效率的。

相關詞條

相關搜尋

熱門詞條

聯絡我們