Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 两个小的httpd服务器还是一个大的?_Ruby On Rails_Ruby On Rails 3_Nginx_Assets_Thttpd - Fatal编程技术网

Ruby on rails 两个小的httpd服务器还是一个大的?

Ruby on rails 两个小的httpd服务器还是一个大的?,ruby-on-rails,ruby-on-rails-3,nginx,assets,thttpd,Ruby On Rails,Ruby On Rails 3,Nginx,Assets,Thttpd,我正在优化我的网站,以便通过不同的域为静态资产提供服务,从而减少它们的下载/上传带宽,并简化缓存 现在,我正在将Rails 3.1与NGINX和Passenger一起使用 到目前为止,我已经设置了系统,以便通过与我现在拥有的类似的域(不是子域,而是不同的域…这样,来自真实域的任何cookie都不会在请求中传输)为所有资产提供服务。NGINX服务器具有以下配置: server { listen 80; server_name similarwebsite.com; root /path/to/st

我正在优化我的网站,以便通过不同的域为静态资产提供服务,从而减少它们的下载/上传带宽,并简化缓存

现在,我正在将Rails 3.1与NGINX和Passenger一起使用

到目前为止,我已经设置了系统,以便通过与我现在拥有的类似的域(不是子域,而是不同的域…这样,来自真实域的任何cookie都不会在请求中传输)为所有资产提供服务。NGINX服务器具有以下配置:

server {
listen 80;
server_name similarwebsite.com;
root /path/to/static/files;
}

server {
listen 80;
server_name website.com;
root /path/to/rails/files/public;
}
我发现为资产提供一个单独的环境要比Rails的环境好得多(我真的不喜欢所有的框架抽象,它们只是为了提供一些简单的资产)

现在我的问题仍然是,我是否应该将静态文件拆分到不同的HTTP服务器(如thttpd)上?目前,它们都运行在同一台机器上,但所有资产都将通过thttpd和nginx进行转移。thttpd实例可以在不同的IP或端口上运行。只是想知道这是否会让它更快


有什么想法吗?我是不是走得太远了?

我认为thttpd速度非常快,同时CPU占用率很低,因此将其用于静态文件可以减少CPU负载。但是,重新启动HTTP连接会花费更多。

分离静态内容是个好主意。也许您应该更进一步,使用CDN(内容交付网络)。我使用过Akamai和Amazon的云前端,每种云前端都有与其性能相关的成本。也有便宜(免费!?)的替代品。查看CDN的wiki页面以了解更多信息:

事实证明,我只是坚持使用一个NGINX http服务器来同时提供动态和静态文件。静态文件位于不同的域中,此解决方案是配置工作量最少的最佳解决方案。

第二个名称通常是static.website.com,而不是similarwebsite.com。也便宜。这听起来很棒。需要记住的一点是,对于thttpd,您可以将keep alive设置为更高的量,而对于nginx,keep alive可以禁用或设置为较低的量。我查看了thttpd,决定不使用它,因为它已经过时且没有很好的文档记录。我只是将NGINX与另一个域一起用于服务这些资产。