假设我有一个包含2个文件的网站,这些文件在S3上静态托管:
index.html
script.js
我有一个方案,每次推送时都会通过git pull
从远程源更新这些文件。这让我想到,当git pull
发生更新文件时,可能会向服务器发出请求。这似乎可能会产生两个导致页面错误的问题:
index.html
或script.js
。index.html
将返回给客户端。然后在服务器上更新文件。然后,客户端请求script.js
,返回新版本。缓解这两个问题的良好做法是什么?
我认为第一个问题不会成为问题,假设文件系统操作是原子的,文件只需一次更新即可。但是,我还没有看到解决第二个问题的任何问题,这似乎更难以解决。
答案 0 :(得分:0)
解决#2的一种方法是使用缓存破坏方法,以编程方式在编译时向script.js文件名添加哈希值,例如:
<script src="script.js">
变为<script src="script-79b1264ad3bc303fd.js">
现在,当通过不匹配的script-[whatever].js
请求index.html
时,客户端会获得404而不是错误的脚本。
至于你如何部署它,它取决于你的构建管道。你在使用Grunt / Gulp / etc吗?