我正在优化我的网站,通过不同的域名提供静态资产,以便他们下载/上传带宽减少,缓存更容易。
现在,我正在使用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交付,所有rails的东西都将通过nginx交付。thttpd实例可以在不同的IP或端口上运行。我只是想知道这是否会使它更快。
任何想法?我是不是太过分了?
我认为ttpd速度非常快,同时对CPU的占用也很轻,所以使用它处理静态文件可以减少CPU负载。但是,重新启动HTTP连接将花费更多。
分隔静态内容的好主意。也许你应该更进一步,使用CDN(内容分发网络)。我用过Akamai和亚马逊的Cloud Front,它们的成本都与性能有关。也有便宜的(免费的!?)替代品。更多信息请参见维基页面:http://en.wikipedia.org/wiki/Content_delivery_network
原来我只是坚持使用一个NGINX http服务器来提供动态和静态文件。静态文件位于不同的域中,此解决方案是配置工作最少的最佳解决方案。