开发分支与生产分支的Javascript/CSS文件位置

4
我已经设置了我的Web服务器遵循常见的git / web工作流程,主要是将开发分支放在一个子域文件夹中,将主分支放在根文件夹/域中。
问题在于,在生产环境中,我们需要合并和压缩我们的主分支js/css文件,并将它们放在CDN上。每次更改和压缩文件时,文件名都会更改,以至于我们的主分支最终引用的是像cdn.example.com/e23ab9.js这样的内容,当然这会随着我们更新代码而频繁更改。
但在我们的开发版本和分支上,我们当然希望只引用未组合和未压缩的文件,以便我们不断地测试新的修改。
我相信有一种聪明/简化的方法来解决这种情况,以便我们不必在每次使用最新的dev版本更新我们的production版本时不断地提交原始js/css文件和新生成的压缩文件之间的差异。
我认为解决方案可能涉及符号链接或类似的东西,但我对它们不是很熟悉,而且更愿意从一开始就学习并做正确的事情。
任何建议,提示或指导都将不胜感激。
谢谢大家。

你在使用.NET吗? - Razor
不,但我们暂时通过一个简单的if语句来解决这个情况,检查正在访问的页面所在的域,并加载正确的文件集。现在可以使用它,但我相信还有更好的方法。 - jstats
1个回答

1

jstats,我们管理类似的设置,根据您的评论,这是有道理的。

重申我认为您在那种情况下决定要做的事情 -

  1. 您可能会压缩和合并文件,创建一个动态和随机的文件名,然后将其发送到CDN。
  2. [猜测很长..] - 您可以在服务器上记录(可能是类似于PID文件的文件,但其中包含随机文件名),以便在呈现时获取它以指向CDN文件。
  3. 在呈现时,您检查服务器端代码是否处于生产或开发状态。 3a. 如果是生产环境,则获取您的“PID”文件并指向最小化的CDN文件 3b. 如果是开发环境,则加载所有常规资源

这需要一种假设,但我之前见过这种实现,所以我就用它了 :-p

回答您关于更简化版本的问题:

是的,通过类似Google Pagespeed Module的东西,可以很好地简化此过程。

然后,在您的生产设置中,只需在虚拟主机配置中进行设置,以允许Pagespeed执行其任务,并在开发设置中关闭Pagespeed即可!

这样做相对简单。

我确定您已经转移了,但是如果其他人发现这个问题并正在寻找答案..


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接