사이트의 내용이 Angular에서 변경되었을 때 index.html을 캐시하지 않도록 하는 방법JS 웹사이트?
통상은.js그리고..css파일 빌드 중에 다음과 같은 버전을 추가합니다.xx.js?v=123웹 사이트 전개 후 새로운 버전의 js와 CSS를 얻을 수 있습니다.하지만 어떻게 해야 하는지 말하는 곳은 보이지 않는다.index.html파일을 업그레이드합니다.그리고 IE에서는 HTML 콘텐츠가 변경되었어야 했지만 여전히 오래된 HTML 콘텐츠를 사용하고 있습니다.
구글에서 찾은 해결책 중 하나는
<meta http-equiv="Cache-control" content="no-cache">
하지만 이것이 최선의 해결책인지 잘 모르겠습니다.
네, 맞아요.를 설정할 필요가 있습니다.Cache-Controlheader를 사용하여 브라우저가 해당 요청에 대해 콘텐츠를 캐시할 필요가 없음을 알 수 있습니다.
<meta http-equiv="Cache-control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
(Pragma&Cache-Control는 동일하지만 HTTP 사양이 다릅니다.여기에서 답변을 참조하십시오.Pragma 헤더와 Cache-control 헤더의 차이)
다음 중 하나의 관련 답변을 참조하십시오.yeoman index.html 캐시 버스트 방법
코멘트에 기재되어 있듯이, 실제로 검토하는 것은 서버 구성입니다만, 설정에 대해서는 언급하지 않았습니다.Angular를 실행합니다.가 있는 JS 사이트IIS를 사용하는 NET 백엔드
당사는 정기적으로 사이트를 업데이트하고 있으며, 과거에 JS 및 CSS 리소스 캐싱에 문제가 있었지만, 다음과 같은 설정을 통해 해결했습니다.
빌드
우리는 침을 꿀꺽 삼키며 앵귤러를 만든다.JS 어플리케이션과 그 일부로서 자주 변경되는 메인 어플리케이션 CSS 및 Javascript 파일의 쿼리 문자열에 버전 번호를 추가합니다.예를 들어 다음과 같습니다.
<link href="css/default.min.css?v=2" rel="stylesheet" />
서버 구성
root web.config에서는 index.html을 캐시하지 않도록 지정합니다.cache-control,Pragma그리고.Expiresmax-age를 0으로 설정합니다.
<location path="index.html">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="DisableCache" cacheControlMaxAge="0.00:00:00" />
</staticContent>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-cache, no-store, must-revalidate" />
<add name="Pragma" value="no-cache" />
<add name="Expires" value="-1" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
참고 자료:
- IIS 클라이언트 캐시: https://learn.microsoft.com/en-us/iis/configuration/system.webserver/staticcontent/clientcache
- Cache-Control HTTP 헤더 : https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
- Pragma HTTP 헤더: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Pragma
- HTTP 헤더 만료:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Expires
설정별content을 매기다0브라우저는 항상 웹 서버에서 페이지를 로드합니다.
<meta http-equiv="expires" content="0">
특정 사이트의 고급 설정에서 IIS를 사전 로드가 실행되지 않도록 지정할 수 있습니다.그러나 사이트 퍼포먼스는 저하됩니다.또한 특정 웹 사이트의 응용 프로그램풀에 와의 통합 파이프라인 모드가 설정되어 있는 것도 확인합니다.NET CLR 버전
그냥 '아까'에 돼요.nginx 삭제:
location ~ \.html$ {
add_header Cache-Control no-store;
}
언급URL : https://stackoverflow.com/questions/34851243/how-to-make-index-html-not-to-cache-when-the-site-contents-are-changes-in-angula
'programing' 카테고리의 다른 글
| create-react-app은 App.js와 index.js를 모두 생성하는 이유는 무엇입니까? (0) | 2023.02.11 |
|---|---|
| Promise와 AJAX의 차이점은 무엇입니까? (0) | 2023.02.11 |
| 워드프레스에서 잘못된 양식 제출 (0) | 2023.02.11 |
| 단일 명령어로 테이블에 열과 주석을 추가하는 SQL (0) | 2023.02.11 |
| npm / yoman install generator - sudo 미포함 (0) | 2023.02.11 |