如果您查看租用服务器的功能对比表,您会注意到CGI 和SSI 等项目。这两个都是动态显示网页的功能,但是在使用上有区别。
对于那些想要轻松了解的人,我将首先总结几点。
- 显示根据情况而变化的页面称为“动态网页”。
- CGI 和 SSI 都提供动态处理,但方式不同。
- CGI:调用 Web 服务器外的程序
- SSI:Web 服务器本身执行直接写在 HTML 中的指令
下面是给那些想要更详细解释的人。
目录
- 1 什么是动态网页?
- 2 CGI是什么?
- 2.1调用外部程序
- 2.2 CGI ≠ Perl
- 3什么是 SSI?
- 3.1 Web服务器本身进行动态处理
- 3.2 exec 可能被禁止
- 4实际使用
- 4.1广泛使用的 CGI
- 4.2 SSI 的使用在下降吗?
什么是动态网页?
让我们从什么是“动态”网页开始。
使用普通 HTML 创建的网页将始终显示相同的内容,无论谁来查看,无论何时以及按下刷新按钮多少次。这是因为 HTML 文件的内容按原样显示。不会一直更改的页面(除非您更新 HTML 文件本身)称为“静态”页面。
另一方面,每次通过计时或动作(例如自动显示当前日期或时间)创建 HTML 数据的页面称为“动态”页面。即使对于一般网站,访问计数器和公告板等根据情况改变显示的内容也是通过动态处理来实现的。
并且有CGI和SSI作为实现动态处理的“方法”。
什么是 CGI
调用外部程序
简而言之,CGI 是一种在 Web 服务器之外调用程序的方法。
例如,公告板等动态内容需要复杂的机制,例如编写、编辑和删除不特定数量的人。但是,Web服务器本来的功能就是“将HTML的内容照原样显示”这么简单,不适合做这么复杂的处理。
因此,在这种情况下,公告板程序是与普通的HTML页面分开准备的,当访问公告板地址时,它被调用。
此时调用的方法称为CGI。正式名称是Common Gateway Interface,如果你敢用日语说,它看起来就像是“一种通用的通信方式(使用外部程序时)”。
CGI ≠ Perl
过去,通过这种 CGI 方法调用的程序通常是使用“Perl”语言创建的。因此,有一些信息将 Perl 编写的程序误导为 CGI,但这是不正确的。
CGI只是一个调用方法,要调用的文件除了Perl之外,还可以用PHP/Python/Ruby、C语言、Java等创建。 * 然而,被调用的目标可能被称为“CGI 程序”或“CGI 脚本”(不管它是用哪种语言编写的)。
什么是 SSI
Web 服务器本身执行动态处理
另一方面,SSI 是一种“允许 Web 服务器本身进行动态处理的方法”。
原来的 Web 服务器的作用是原样显示 HTML 的内容,但 SSI 增加了解释特殊命令(指令)的功能。正式名称为Server Side Includes,日语为“(Web 上包含动态处理)服务器端”。
SSI 有几个命令,它们根据特定的语法直接写在 HTML 中。例如,您可以通过编写命令“flastmod”来显示页面的最后修改日期和时间。 * 在编写 SSI 命令时,通常需要将 HTML 文件的扩展名设置为“.shtm/.shtml”。但是,根据设置,也可以执行扩展名为“.htm/.html”的 SSI 命令。
即使禁止使用 exec
还有一个特殊的 SSI 命令,“exec”。通过指定外部程序,这可以像 CGI 一样运行,并且可以按原样执行 Linux / Unix 命令。
尤其是后一个对OS的命令可以原样执行的问题,根据使用方法的不同,有可能对服务器造成严重的故障。因此,许多租用服务器(共享服务器)禁止使用此“exec”命令或设置一些限制。
实际使用
继续被广泛使用的CGI
首先,CGI在网站上的很多情况下仍然使用。即使您不能创建自己的程序,网上也有许多免费发行版。
即使在租用服务器上,几乎没有地方禁止使用 CGI。但是,请注意某些 CGI(尤其是游戏)会给服务器带来很大的负载,并可能会限制此类程序的使用。
SSI的使用在下降吗?
关于SSI,我觉得使用它的场景比以前减少了很多(虽然也包括了经理的主观性)。主要原因似乎是PHP 的传播。
最常用的 SSI 命令之一,用于包含另一个名为“include”的文件的内容。例如,通过使用此命令捕获网站的页眉、侧边栏和页脚等公共部分的 HTML,可以更轻松地管理站点。
不过和SSI一样,可以直接用HTML编写的PHP出现了,其他文件也几乎可以用同样的方式导入。此外,现在PHP已经变得如此流行,以至于它可以在每月100日元左右的租用服务器上使用,甚至可以使用免费服务器,并且必须使用SSI的情况似乎减少了。
当然,如果你有一个可以使用root权限的VPS,你可以充分利用exec命令做一些有用的事情,但我的感觉是使用频率整体下降。