2016-12-29 5 views
0

내가 정적 S3에 호스팅되는이 개 파일이있는 웹 사이트가 말한다 :경쟁 조건이

  1. index.html
  2. script.js

나는이 파일이 업데이트되는 방식을 가지고 내가 누를 때마다 원격 출처의 git pull을 통해. 이것은 내가 파일을 업데이 트하는 git pull이 일어나고있는 것으로 서버에 요청을 할 가능성이 있다는 생각이 들었다.

  1. 부분적으로 업데이트 index.html 또는 script.js가 반환됩니다 :이 페이지 오류가 발생할 것 두 가지 문제를 만들 수 있었던 것처럼이 보인다.
  2. 이전 index.html이 클라이언트에 반환됩니다. 그런 다음 파일이 서버에서 업데이트됩니다. 그런 다음 클라이언트는 script.js에 대한 요청을 작성하여 새 버전을 반환합니다.

이러한 두 가지 문제를 완화하는 좋은 방법은 무엇입니까?

파일 시스템 작업이 원자 적이며 파일이 한 번에 업데이트된다고 가정하면 첫 번째 문제는 문제가되지 않는다고 상상해보십시오. 그러나 나는 두 번째 문제를 다루는 것을 보지 못했다.

답변

0

# 2를 처리하는 한 가지 방법은 프로그래밍 방식으로 컴파일시 script.js 파일에 해시를 추가하는 캐시 무효화 방법을 사용하는 것입니다. script-[whatever].jsindex.html 일치하지 않는, 클라이언트가 가져옵니다 (404)보다는 잘못된 스크립트를 통해 요청 될 때 <script src="script.js">는 지금 <script src="script-79b1264ad3bc303fd.js">

된다.

배포 방법은 빌드 파이프 라인에 따라 다릅니다. Grunt/Gulp/등을 사용하고 있습니까?

관련 문제