我们在服务器HTML + CSS的10台Nginx服务器之前使用Varnish。 CSS URL的格式如下:“file-HASH.css”(带有HASH的内容校验和)。
当我们部署应用程序(从版本A到版本B)时,这需要花费一些时间,在此过程中(几秒钟),最终用户可以下载2个版本的HTML:
版本A没问题:file-A.css已缓存。
版本B的问题:Varnish可能会从尚未部署的后端获取文件!然后返回404。
我看到一些解决方案:
有输入吗?
最佳答案
您可以做几件事。您可以启动一组新的环境服务器,在Varnish后面放置一个负载均衡器,将新版本部署到其中一个服务器组,然后将流量路由到新组(绿蓝色)。
但是,最简单的解决方案是将发布与部署脱钩。首先部署具有所有新css文件的版本,然后其他版本在数据库中加一个标志或部署使用这些文件的代码。将您的发行分为两部分可能有点原始,但是当Varnish要求时,它将确保资源存在。
关于deployment - 具有多个后端的 Varnish 在部署期间提供陈旧的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48811837/