我有一个Sproutcore应用程序,它使用Cloudant托管的CouchDB。在devenv中,我使用Sproutcore代理将请求转发给Cloudant(由于单一来源策略,我显然无法从我的JavaScript中调用任意主机)。
您对托管应用的建议是什么? CouchApps加载脚本失败并出现模糊错误(请注意Sproutcore应用程序大约有40 MB的JavaScript和资源)。
答案 0 :(得分:2)
托管直接与couchdb对话的应用程序的事情是,您受到相同原始策略的限制,因此提供SproutCore应用程序的服务器必须与访问couchDB数据库位于同一个域中。如果您的主机提供静态文件服务器,您可以使用它,但您最好的选择可能只是将其保存为沙发应用程序。
将SC部署为沙发应用程序的密钥是,您必须设置sc-build生成的URL以指向正确的位置。这可以使用类似这样的构建文件设置来完成:
:url_prefix => '<database>/_design/<designDocument>/'
这样链接指向正确的位置。
如果您愿意,您还可以设置CouchDB网址重写以获得更简单的网址。看看这里有关这方面的更多讨论:
https://groups.google.com/d/topic/sproutcore/-D-5T5yPg3A/discussion
PS:40mb似乎过大了!你有很多照片吗?如果你有那么多的JS / CSS,我会担心的。答案 1 :(得分:1)
Cloudant(主要)在us-east-1b或us-west-1b可用区域的EC2上托管其集群。如果您无法部署为CouchApp,则应尝试将数据库群集旁边的应用程序层放置在一起。这将最大限度地减少Web服务器和数据库之间的延迟。
您可以通过获取EC2实例并在其上运行Web服务器来自行完成此操作,也可以使用在AWS上托管的第三方主机(例如Heroku)。
在这两种情况下,您都需要从Web服务器到数据库运行一个小代理。这就是为什么简单地在S3上托管不是一种选择。
将应用程序部署到Web服务器后,请不要忘记检查您的Web服务器和数据库是否位于同一AWS可用区域中。如果不是,只需ask Cloudant移动您的帐户。