Ruby Web编程与GUI开发全解析
1. Ruby Web性能优化
在使用Ruby编写Web的CGI程序时,默认配置每次访问 cgi-bin
页面都要启动一个新的Ruby副本,这会造成机器资源的浪费,还会让网页加载速度变得很慢。不过,Apache Web服务器通过支持可加载模块解决了这个问题。这些模块会动态加载,成为运行中的Web服务器进程的一部分,这样就不用反复启动新的解释器来处理请求了,Web服务器本身就可以充当解释器。
mod_ruby
就是这样一个Apache模块,它能将完整的Ruby解释器集成到Apache Web服务器中。其附带的 README
文件详细说明了编译和安装的步骤。安装并配置好后,运行Ruby脚本会比之前快很多,还能利用 mod_ruby
提供的额外功能,比如与Apache请求处理的紧密集成。
不过,使用 mod_ruby
也有一些需要注意的地方。因为解释器在请求之间会一直驻留在内存中,所以可能会处理来自多个应用程序的请求,这就可能导致应用程序中的库发生冲突,尤其是不同库中存在同名类的情况。而且,不能保证同一个解释器会处理来自同一个浏览器会话的一系列请求,因为Apache会使用其内部算法来分配处理进程。
FastCGI协议可以解决部分上述问题。它是一个很实用的方法,适用于所有CGI风格的程序,不只是Ruby。它使用一个很小的代理程序,通常作为Apache模块运行。当收到请求时,代理会将请求转发给一个长期运行的进程,这个进程就像普通的CGI脚本一样处理请求,然后将结果反馈给代理,再由代理