我正在做一个富互联网应用程序(html/js/css),它必须通过XHR/Websocket与后端应用程序服务器(RoR或node.js)通信。
我想知道将RIA文件提供给web浏览器的最佳方式是什么:将CDN或RoR/node.js作为静态文件服务器?
后者不是因为同源策略而使浏览器无法与后端服务器通信吗?
感谢
同源策略适用于请求,而不是静态文件。
您在www.test.com 上
$.get('api.someotherorigin.com/things.json', function(res){
// I'll get a same origin policy error
});
这就是人们在这些情况下使用getJSON/jsonp的原因。它甚至适用于子域,这取决于设置方式。
cdn的好处是从一个无Cookie的、通常经过地理位置优化的源提供静态文件。在开发过程中,您几乎肯定不需要这个。
稍后的好处是,你可能只有几个服务器(或只有一个)位于一个可能有利于同一位置的人的位置,并为不靠近的人提供糟糕的RTT。此外,您的域可能会有用于身份验证、会话ID等的cookie——如果您使用cdn,则可以避免将这些cookie与后续对静态文件的每一个请求一起发送,从而减少所有请求/响应的大小。
只需自己托管文件即可。使用connect
可以很容易地提供静态文件
connect.static
如果您想利用缓存,可以从cdn请求流行的JavaScript文件。jscdn和googlecdn很受欢迎。
但是您自己的个人HTML/CSS文件应该在静态文件服务器上。(如果你想的话,你可以使用其他类似nginx的东西通过子域为它们提供服务)