2011-03-06 40 views
1

我有一个使用Cloudant托管的CouchDB的Sproutcore应用程序。在devenv中,我使用Sproutcore代理将请求转发给Cloudant(由于单一来源策略,我显然无法从JavaScript中调用任意主机)。托管由Cloudant CouchDB备份的Sproutcore应用程序的最佳位置?

对于托管应用程序,您会有何建议? CouchApps加载脚本失败并带有模糊的错误(请注意Sproutcore应用程序大约有40 MB的JavaScript和资源)。

回答

2

有关托管直接与couchdb对话的应用程序的事情是,您受限于相同的来源策略,因此提供SproutCore应用程序的服务器必须与访问couchDB数据库时位于同一个域中。如果你的主机提供了一个静态文件服务器,你可以使用它,但你最好的选择可能只是将它保存为沙发应用程序。

将SC部署为沙发应用程序的关键是您必须设置sc-build生成的指向正确位置的URL。这可以通过buildfile设置如下:

:url_prefix => '<database>/_design/<designDocument>/' 

这样链接指向正确的位置。

如果您愿意,您还可以设置CouchDB url重写以获得更简单的url。看看这里的详细讨论这一点:

https://groups.google.com/d/topic/sproutcore/-D-5T5yPg3A/discussion

PS:40MB似乎过于大!你有很多图像吗?我担心你是否拥有那么多的JS/CSS。

+0

Thnx的信息。 – Renat 2011-03-08 09:19:55

1

Cloudant将其集群(主要)托管在美国东部1b或美国西部1b可用区的EC2上。如果您无法将其部署为CouchApp,则应尝试将应用程序层置于数据库群集旁边。这将最小化Web服务器和数据库之间的延迟。

您可以通过获取EC2实例并在其上运行Web服务器来实现此目的,也可以使用AWS上托管的第三方主机(例如Heroku)。

在这两种情况下,您都需要从Web服务器运行一个小型代理到数据库。这就是为什么简单地在S3上托管目前不是一种选择。

将应用程序部署到Web服务器后,请不要忘记检查您的Web服务器和数据库是否位于同一个AWS可用区域中。如果他们不是,只需ask Cloudant即可移动您的帐户。

+0

Thnx。我试图找到比启动我自己的AWS镜像更简单的选项。似乎该选项不可用。 – Renat 2011-03-08 09:21:13