2016-12-29 167 views
0

说我有2个文件,这些文件在S3静态托管的网站:竞争条件

  1. index.html
  2. script.js

我有这些文件被更新方案每次按下时都会通过来自远程原点的git pull。但是,这让我想到了,有可能向服务器发出请求,因为git pull正在更新文件。这似乎是它可以创建两个问题,会导致网页错误:

  1. 的局部更新index.htmlscript.js返回。
  2. 将旧的index.html返回给客户端。这些文件然后在服务器上更新。客户然后请求script.js,它返回新版本。

缓解这两个问题的最佳做法是什么?

我想第一个问题不会是一个问题,假设文件系统操作是原子性的,并且文件一次更新。但是,我没有看到任何解决第二个问题的问题,这似乎更难以解决。

回答

0

寻址#2的一种方法是使用缓存清除方法,在编译过程中以编程方式将散列添加到script.js文件名。 <script src="script.js">成为<script src="script-79b1264ad3bc303fd.js">

现在,当通过非匹配index.html,客户得到一个404,而不是错误的脚本请求script-[whatever].js

至于你如何去部署这个,它取决于你的构建管道。你在使用Grunt/Gulp/etc吗?