2016-12-29 210 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嗎?