2011-03-06 71 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