1

我正在部署一个由静态(营销)站点和动态应用程序组成的 Web 应用程序。

我的目标是:

  1. 分离动态和静态内容。更新静态站点不应重新部署代码;更新应用程序不应触及静态站点。
  2. 让它看起来都生活在同一个 URL 上,例如 www.mysite.com

想想 Twitter 是如何工作的:http: //twitter.com/privacy转到由法律/营销部门控制的静态页面,而http://twitter.com/转到您的提要。

我看到了一些选项,可以使用一些帮助:

  1. 设备:基于 URL 的路由,如 NetScaler / F5。太贵了,在云部署中表现不佳(Heroku/Jitsu/AWS/etc)
  2. 代理:静态站点部署到不同的 URL(例如 web.mysite.com),动态站点知道特殊路径并检索和缓存数据。它有效,但复杂且混乱。
  3. CORS:所有静态站点均从静态站点 www.mysite.com 提供,但从备用 api.mydata.com 加载应用程序模板、JS、CSS 等,并使用 CORS 通过 REST 加载动态数据。

3 听起来不错,但担心 CORS 浏览器支持,并且仍然会在静态和动态站点上受到一些污染。

FWIW,在 nodejs 中实现动态,但可以很容易地应用于 RoR 甚至 JavaEE。

4

1 回答 1

1

如果您不介意将静态内容放在特定的子目录中(例如 twitter 的 /privacy),那么我认为您需要做的就是将该目录添加到您的 .gitignore (或其他 VCS 忽略文件)中,然后部署您的应用程序而无需那个子目录。您需要一些其他过程来上传对静态内容的更改。

至于提供服务,您应该有一个前端网络服务器(可能是 apache 或 ningx)或其他代理服务器来服务您的所有静态内容,包括来自应用程序动态部分的图像和 js/css。如果您的静态站点是 .html 等,那么它应该以相同的方式提供服务,而根本不接触您正在运行的应用程序。您还可以在 Web 或代理服务器配置中更加明确,它应该为该子目录中的所有内容提供服务,而无需将请求转发到您的应用程序。

于 2013-09-16T15:49:27.487 回答