我有一個使用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