我有一个使用Cloudant托管的CouchDB的Sproutcore应用程序。在devenv中,我使用Sproutcore代理将请求转发给Cloudant(由于单一来源策略,我显然无法从JavaScript中调用任意主机)。托管由Cloudant CouchDB备份的Sproutcore应用程序的最佳位置?
对于托管应用程序,您会有何建议? CouchApps加载脚本失败并带有模糊的错误(请注意Sproutcore应用程序大约有40 MB的JavaScript和资源)。
我有一个使用Cloudant托管的CouchDB的Sproutcore应用程序。在devenv中,我使用Sproutcore代理将请求转发给Cloudant(由于单一来源策略,我显然无法从JavaScript中调用任意主机)。托管由Cloudant CouchDB备份的Sproutcore应用程序的最佳位置?
对于托管应用程序,您会有何建议? CouchApps加载脚本失败并带有模糊的错误(请注意Sproutcore应用程序大约有40 MB的JavaScript和资源)。
有关托管直接与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。
Cloudant将其集群(主要)托管在美国东部1b或美国西部1b可用区的EC2上。如果您无法将其部署为CouchApp,则应尝试将应用程序层置于数据库群集旁边。这将最小化Web服务器和数据库之间的延迟。
您可以通过获取EC2实例并在其上运行Web服务器来实现此目的,也可以使用AWS上托管的第三方主机(例如Heroku)。
在这两种情况下,您都需要从Web服务器运行一个小型代理到数据库。这就是为什么简单地在S3上托管目前不是一种选择。
将应用程序部署到Web服务器后,请不要忘记检查您的Web服务器和数据库是否位于同一个AWS可用区域中。如果他们不是,只需ask Cloudant即可移动您的帐户。
Thnx。我试图找到比启动我自己的AWS镜像更简单的选项。似乎该选项不可用。 – Renat 2011-03-08 09:21:13
Thnx的信息。 – Renat 2011-03-08 09:19:55