使用RequireJS从CDN加载本地项目静态资产

时间:2013-11-15 14:38:00

标签: node.js express gruntjs cdn rackspace-cloud

我有一个单页应用程序,节点提供骨干应用程序以及所有营销材料。我想从Rackspace Cloudfiles CDN提供所有资产(JS,html,图像),以减少加载时间,因为gzip文件将被传送,同时减少节点服务器上的负载。

自动化的最佳方法是什么?

我需要:

  • 构建到CDN后同步文件
  • 引用生产模式中所有静态资产的CDN

我找到了我的项目中使用的Grunt和Node Modules的解决方案。

Grunt CDN
Grunt Cloud Files
Node Asset Rack

如果我和Grunt一起去 - 这是我的第一选择,

  1. 如何设置我正在运行的快速应用程序,以便从生产中的CDN提供服务?
  2. 最好是将资产管理器用于节点,因为它仍然为我的所有资产提供服务吗?

1 个答案:

答案 0 :(得分:0)

  

如何设置我正在运行的快速应用程序从生产中的CDN进行服务?

当您渲染视图时,您可以向其传递一个标记,以告知从何处挑选资产。

如果你有兴趣,我在这里有一个例子。在我的情况下,我有一个标志,我是否连接到网络(例如在飞行期间),以决定从哪里选择我的JS文件:

<% if(isConnected) { %> 
      <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
      <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
      <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>    
      <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular-resource.min.js"></script>    
      <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular-cookies.min.js"></script>    
    <% } else { %>
      <script src="/js/jquery.min.js"></script>
      <script src="/js/bootstrap.min.js"></script>
      <script src="/js/angular.min.js"></script>
      <script src="/js/angular-resource.min.js"></script>
      <script src="/js/angular-cookies.min.js"></script>
    <% } %>

https://github.com/hectorcorrea/hectorcorrea.com/blob/master/views/index.ejs#L136

在我的示例中,该值是硬编码的,但您可以轻松地将Express dev / prod值传递给视图以自动完成相同的操作。