【问题标题】:Laravel elixer versioning (cache buster) multiple serversLaravel elixer 版本控制(缓存破坏器)多个服务器
【发布时间】:2016-07-14 12:00:28
【问题描述】:

目前我们有一个包含多个服务器的新服务器环境,因此如果我们下载存储库并运行 gulp,laravel elixer 的缓存清除功能将不起作用,因为每个服务器都有不同版本的 .js 和 . css 文件。

问题是负载平衡可以根据请求将用户发送到任一服务器。一些浏览器似乎不受此问题的影响,但例如我无法使用 JMeter 正确加载 css 或 js 进行负载测试。

有没有一种方法可以在不将编译后的文件添加到存储库或通过 FTP 传输所有内容的情况下同步构建?

我们正在尝试通过运行一个脚本来自动化部署,该脚本会在每次更新 productiosn 分支时拉取最新的 repo。

【问题讨论】:

  • 它不起作用?还是您的意思是您必须继续提交冗余版本?
  • 它工作得很好,但每个服务器都有不同的缓存破坏文件名
  • 我已经有一段时间没有使用 laravel 了,所以请提醒我为什么这很重要?您的源 SASS 在每台开发机器上都应该保持相同,并且您没有提交已编译的 css,那么如果它不同又有什么关系呢?或者您是在谈论集群生产环境的某种负载均衡器问题,因此最终用户可能必须根据负载均衡器将它们扔到哪个节点来获取这些资源的冗余副本?
  • 更新问题,但负载均衡器尤其是在运行 jmeter 时。
  • 一种简单的方法是编写自己的缓存清除逻辑。编译并在保存之前,通过一些散列算法对其进行管道传输,以确保相同的内容将产生相同的文件名,但在更改某些内容时文件名会有所不同。一定要写信给manifest.json

标签: php laravel gulp laravel-elixir


【解决方案1】:

我认为解决这个问题的唯一方法是提交已编译的资产文件。

起初我觉得这个解决方案很奇怪,因为我们没有版本 vendor 文件夹。

但到最后,我发现大部分前端项目总是提交一个dist文件夹,里面有编译好的文件。

因此,每次修改资产文件时,您都需要提交公共路径的 build 文件夹。

当然,在推送之前不要忘记创建gulp --production 以最小化您的文件。

【讨论】:

  • 谢谢 - 我会在星期一看看然后回来:)
  • 我认为你很接近,但Dencker的建议也应该包含在答案中:)
猜你喜欢
  • 2013-06-24
  • 1970-01-01
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多