【问题标题】:Serve a html/jss/css application from CDN or application server (RoR, node.js etc)?从 CDN 或应用程序服务器(FoR、node.js 等)提供 html/js/css 应用程序?
【发布时间】:2011-09-03 13:05:42
【问题描述】:

我正在做一个富互联网应用程序 (html/js/css),它必须通过 XHR/Websocket 与后端应用程序服务器(RoR 或 node.js)进行通信。

我想知道将 RIA 文件提供给 Web 浏览器的最佳方式是什么:CDN 或 RoR/node.js 作为静态文件服务器?

是不是因为同源策略导致浏览器无法与后端服务器通信?

谢谢

【问题讨论】:

    标签: javascript ruby-on-rails node.js cdn


    【解决方案1】:

    只需自己托管文件。您可以使用 connect 轻松提供静态文件

    connect.static

    如果您想利用缓存,您可以从 cdn 请求 流行 JavaScript 文件。 jscdngoogle cdn 很受欢迎。

    但您自己的个人 HTML/CSS 文件应该位于静态文件服务器上。 (如果需要,您可以使用 nginx 之类的其他东西通过子域为这些服务提供服务)

    【讨论】:

    • 所以如果我没看错,这意味着 CSS 和静态 HTML 应该来自 Apache(或其他),而动态的东西应该来自节点?
    • @drachenstern ryan dahl 自己说 node.js 作为静态文件服务器的性能并不高。他建议你改用 nginx)
    【解决方案2】:

    同源策略适用于请求,而不是静态文件。

    你在 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 与对静态文件的每个后续请求一起发送,从而减少所有请求/响应的大小。

    【讨论】:

      猜你喜欢
      • 2013-08-25
      • 2023-03-11
      • 2017-02-12
      • 1970-01-01
      • 2015-09-04
      • 2017-02-07
      • 2016-04-10
      • 2013-01-12
      • 2012-08-14
      相关资源
      最近更新 更多