>

웹 사이트가 있다고 가정하자. 다른 많은 것들과 마찬가지로 CSS 및 JavaScript 파일을 참조하는 HTML 페이지를 제공합니다. 새 버전을 배포 할 때 다음 시나리오가 걱정됩니다.

<올>
  • 클라이언트가 /index.html 를로드 함 .
  • 원자간에 완벽하게 배포됩니다.
  • 클라이언트가 /app.js 를로드합니다 1 단계에서로드 한 HTML 페이지에서 참조되었습니다.
  • 이제 클라이언트가 내 사이트에 대해 일관되지 않은 견해를 가지고 있습니다. 브라우저에이전버전의 /index.html 가로드되었습니다.  그리고 /app.js새로운버전 . 그런 다음 :

    1. 오류가 발생합니다. 고객이 화나게 다른 곳에서 돈을 가져옵니다.

    이 시나리오를 피하고 클라이언트 측에서 일관성을 유지하는 가장 좋은 방법은 무엇입니까? 모든 고객이 하이브리드가 아닌 이전 또는 새 버전의 사이트를 볼 수 있도록 보장하고 싶습니다.

    • 답변 # 1

      이 문제에 대한 많은 정보를 찾지 못했습니다. 즉시 사용 가능한 배포 솔루션으로 구워진 전략이나 온라인 어디에서나 많은 토론이없는 것 같습니다.

      내가 본 가장 좋은 방법은 몇 가지 핵심 아이디어로 요약된다 :

      <올>

      HTML 페이지에서 참조하는 정적 자산은 변경 불가능하고 영구적입니다. /assets/app.js 를 배포 한 후에  절대로 변경할 수 없습니다.

      명시적인 버전 번호를 사용하여 새로운 버전의 자산을 배포하십시오. HTML 웹 사이트의 버전 23은 /assets/app-v23.js 만 참조해야합니다. .

      배치가 완전하지 않은 경우 단계적으로 배포하십시오. 첫 번째 단계에서는 모든 새로운 정적 자산 버전을 차량 전체에 배포하십시오. 이들은 새로운 버전 번호를 가지고 있기 때문에 어떤 HTML 페이지에서도 아직 참조되지 않습니다. 두 번째 단계에서는 새로운 저작물을 참조하여 HTML의 모든 새 버전을 배포합니다.

      소스 :

      결국 일관성있는 웹앱의 정적 자산 : 배포가 원자 적이 지 않은 경우 원래 질문의 문제점과 추가 왜곡에 대해 설명합니다. 솔루션이 과도하게 진행되는 동안 흥미로운 아이디어를 제공합니다.

      원자 배포를 통한 안정적인 배송 :이 문제의 변형 인 XHR API 업데이트 처리에 대해 설명합니다. 사용자의 브라우저에 이전 버전의 JavaScript 앱이 있지만 사용자가 자주 새로 고치지 않으면 최신 버전의 API에 액세스 할 수 있습니다.

  • 이전 java - SolrJ를 사용하여 전체 가져 오기 명령을 실행하는 방법
  • 다음 MYSQL 폴링 결과 테이블 가져 오기