Apache web服务器程序和内容提供商程序之间交互范式的演变是什么?
在我看来,web服务器负责向客户端交付内容。如果是静态的内容,比如图片和静态html文档,web服务器只需直接以比特流的形式交付它们。如果是在处理客户端请求期间生成的动态内容,web服务器将不生成内容本身,而是调用一些外部程序来生成内容 另外,这种动态内容生成技术包括以下内容:Apache web服务器程序和内容提供商程序之间交互范式的演变是什么?,apache,iis,tomcat,webserver,Apache,Iis,Tomcat,Webserver,在我看来,web服务器负责向客户端交付内容。如果是静态的内容,比如图片和静态html文档,web服务器只需直接以比特流的形式交付它们。如果是在处理客户端请求期间生成的动态内容,web服务器将不生成内容本身,而是调用一些外部程序来生成内容 另外,这种动态内容生成技术包括以下内容: CGI 伊萨皮 从那时起,我注意到: …在IIS 7中,模块取代ISAPI 过滤器 还有其他的吗?有没有人能帮我完成上面的列表,并对它们的进化过程进行讨论或显示一些链接?我认为了解IIS、TomCat和Apache
- CGI
- 伊萨皮
非常感谢。您的问题中最大的缺失是您可以让Web服务器动态生成内容。这在PHP和Perl之外的大多数平台上都很常见。您经常将该网站设置在用作代理的apache或nginx之后,但它不会在任何合理的意义上“调用外部程序”,而是将http请求转发给代理服务器。这主要是为了让您可以在同一台服务器上拥有多个站点,并且让apache/nginx保护您免受错误请求的影响 当然,为了回答这个问题,我们可以说“代理”是调用外部程序的一种方式。:-) 另一种“调用外部程序”的方法是pythonswsgi,在这里您可以调用一个永久运行的服务器。因此,同样,您不启动外部程序,这更像是在ASP中调用模块(虽然它是一个单独的程序,而不是模块,但您并不是在每次请求时启动它,而是使用API) 从调用CGI中的外部程序到调用ASP.NET中的模块、使用WGI处理或代理到另一个Web服务器的更改发生了,因为使用CGI,您必须为每个请求启动一个新的prpogram。PERL/PHP解释器需要被加载到内存中,它们使用的所有模块也需要加载到内存中。这会很快变得非常繁重,并且会占用大量的进程/内存 因此,为了能够使用永久运行的更大系统,开发了其他技术。它们中的大多数都依赖于平台/语言,唯一与平台无关的是真正构建一个完整的Web服务器,然后在前面使用apache/nginx作为代理(在这种情况下,不再需要apache/nginx)
我希望这能澄清一些问题。好吧,你的问题中最大的缺失是你可以让Web服务器动态生成内容。这在PHP和Perl之外的大多数平台上都很常见。您经常将该网站设置在用作代理的apache或nginx之后,但它不会在任何合理的意义上“调用外部程序”,而是将http请求转发给代理服务器。这主要是为了让您可以在同一台服务器上拥有多个站点,并且让apache/nginx保护您免受错误请求的影响 当然,为了回答这个问题,我们可以说“代理”是调用外部程序的一种方式。:-) 另一种“调用外部程序”的方法是pythonswsgi,在这里您可以调用一个永久运行的服务器。因此,同样,您不启动外部程序,这更像是在ASP中调用模块(虽然它是一个单独的程序,而不是模块,但您并不是在每次请求时启动它,而是使用API) 从调用CGI中的外部程序到调用ASP.NET中的模块、使用WGI处理或代理到另一个Web服务器的更改发生了,因为使用CGI,您必须为每个请求启动一个新的prpogram。PERL/PHP解释器需要被加载到内存中,它们使用的所有模块也需要加载到内存中。这会很快变得非常繁重,并且会占用大量的进程/内存 因此,为了能够使用永久运行的更大系统,开发了其他技术。它们中的大多数都依赖于平台/语言,唯一与平台无关的是真正构建一个完整的Web服务器,然后在前面使用apache/nginx作为代理(在这种情况下,不再需要apache/nginx)
我希望这能澄清一些问题。fastcgi和wsgi是内容生成器可以用来与Web服务器对话的另外两个接口——最近的接口之所以不是完整的程序,是因为分叉和执行预期可执行的东西成本很高 OTOH,编写您的小生成器时,要使它在调用之间不会泄漏任何信息,这比在最后自由退出(并像普通可执行文件一样依赖环境变量和命令行参数)要困难得多
这都是出于性能原因,但是,Web服务器中有更复杂的内容生成器和流程管理。fastcgi和wsgi是内容生成器可以用来与Web服务器对话的另外两个接口——较新的接口不是完整程序的原因是,分叉和执行预期可执行的内容代价高昂 OTOH,编写您的小生成器时,要使它在调用之间不会泄漏任何信息,这比在最后自由退出(并依赖于环境变量和命令)要困难得多