1

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

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

4

2 回答 2

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,我会担心的。

于 2011-03-07T12:57:57.390 回答
1

Cloudant 将其集群(主要)托管在 us-east-1b 或 us-west-1b 可用区中的 EC2 上。如果您无法部署为 CouchApp,则应尝试将应用程序层部署在数据库集群旁边。这将最大限度地减少 Web 服务器和数据库之间的延迟。

您可以通过获取 EC2 实例并在其上运行 Web 服务器来自己完成此操作,或者您可以使用托管在 AWS 上的第三方主机(例如Heroku)。

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

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

于 2011-03-07T18:13:13.220 回答