deployment - 具有多个后端的 Varnish 在部署期间提供陈旧的内容

标签 deployment assets varnish varnish-vcl

我们在服务器HTML + CSS的10台Nginx服务器之前使用Varnish。 CSS URL的格式如下:“file-HASH.css”(带有HASH的内容校验和)。

当我们部署应用程序(从版本A到版本B)时,这需要花费一些时间,在此过程中(几秒钟),最终用户可以下载2个版本的HTML:

  • 版本A =>“file-A.css”(已在 Varnish 缓存中)
  • 版本B =>“file-B.css”(仅在某些后端存在)

  • 版本A没问题:file-A.css已缓存。

    版本B的问题:Varnish可能会从尚未部署的后端获取文件!然后返回404。

    我看到一些解决方案:
  • 重试,直到找到css文件=>可以创建ddos
  • 禁用在通过varnishadm部署期间未部署的后端
  • 使用单个后端来存储 Assets =>而不是H.A.

  • 有输入吗?

    最佳答案

    您可以做几件事。您可以启动一组新的环境服务器,在Varnish后面放置一个负载均衡器,将新版本部署到其中一个服务器组,然后将流量路由到新组(绿蓝色)。

    但是,最简单的解决方案是将发布与部署脱钩。首先部署具有所有新css文件的版本,然后其他版本在数据库中加一个标志或部署使用这些文件的代码。将您的发行分为两部分可能有点原始,但是当Varnish要求时,它将确保资源存在。

    关于deployment - 具有多个后端的 Varnish 在部署期间提供陈旧的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48811837/

    相关文章:

    php - nGinx 和 PhpMyAdmin 重定向问题上的 Varnish

    apache - [proxy_fcgi :error](70007)The timeout specified has expired

    .net - 在没有 .NET Framework 的情况下运行基于 .net 的应用程序

    java - JBoss Wildfly - 部署是临时文件。那属性呢?

    ios - 在 IOS 中从 iPhone 中删除 Assets (图片或视频)

    ios - Storyboard中的隐形图像

    deployment - 23MB EAR 的 wsadmin AdminApp.install 挂起

    java - 创建并部署 "Static"数据库

    ios - 在iOS的按需资源中,有什么方法可以阻止清除/清除 Assets 吗?

    varnish - 什么是 Varnish 中的管道模式和传递模式