추가 쿼리 문자열 매개 변수 또는 POST 사용이 옵션이 아닌 경우 Internet Explorer 11에서 AJAX 캐싱을 방지하는 방법
나는이 질문이 제기되었음을 알고 있지만 현대 REST 연습에서는이 질문의 이전 반복이나 답변이 정확하거나 충분하지 않습니다. 이 질문에 대한 확실한 답이 필요합니다.
문제는 잘 알려져 있습니다. IE (11 개까지도)는 AJAX 요청을 캐시하는데, 이는 정말 멍청합니다. 모두가 이것을 이해합니다.
무엇입니까 없습니다 잘 이해하면 이전 답변의 어느 것도 충분하지 않습니다. SO에 대한이 질문의 모든 이전 인스턴스는 다음 중 하나에 의해 충분히 답변 된 것으로 표시됩니다.
1) 각 요청에 고유 한 쿼리 문자열 매개 변수 (예 : unix 타임 스탬프)를 사용하여 각 요청 URL을 고유하게 만들어 캐싱을 방지합니다.
-또는-
2) IE는 특정 고유 한 상황을 제외하고 POST 요청을 캐시하지 않으므로 GET 대신 POST를 사용합니다.
-또는-
3) 서버가 전달한 'cache-control'헤더 사용.
현대 REST API 연습과 관련된 많은 상황 에서 IMO 는 이러한 답변 중 어느 것도 충분하거나 실용적이지 않습니다. REST API는 완전히 다른 동작으로 POST 및 GET 요청에 대해 완전히 다른 핸들러를 갖기 때문에 POST는 일반적으로 GET에 대한 적절하거나 올바른 대안이 아닙니다. 또한 많은 API에는 엄격한 유효성 검사 기능이 있으며 여러 가지 이유로 예상하지 않은 쿼리 문자열 매개 변수를 제공하면 500 또는 400 오류가 발생합니다. 마지막으로, 서버 응답에서 제공하는 헤더를 제어 할 수없고 캐시 제어 헤더를 추가 할 수없는 타사 또는 유연하지 않은 REST API와 인터페이스하는 경우가 많습니다.
따라서 질문은 다음과 같습니다.
IE가 AJAX GET 요청의 결과를 캐싱하지 못하도록이 상황에서 클라이언트 측에서 수행 할 수있는 작업이 실제로 없습니까?
캐싱은 일반적으로 서버에서 반환 할 때 콘텐츠에 헤더를 설정하여 제어됩니다. 이미 그렇게하고 있고 IE가 그들을 무시하고 어쨌든 캐싱하는 경우, 문제를 해결하는 유일한 방법은 질문에 언급 된 캐시 무효화 기술 중 하나를 사용하는 것입니다. API의 경우 캐시 무효화 기술을 시도하기 전에 적절한 캐시 헤더를 사용하고 있는지 확인하는 것이 좋습니다.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching_FAQ
Cache-control: no-cache
Cache-control: no-store
Pragma: no-cache
Expires: 0
API를 제어하지 않는 경우 ajax 가져 오기에 요청 헤더를 추가하여 IE 캐싱을 비활성화 할 수 있습니다.
'Cache-Control': 'no-cache, no-store, must-revalidate', 'Pragma': 'no-cache', 'Expires': '0'
'IT Share you' 카테고리의 다른 글
채널 0에서 실패한 요청 수정 방법 (0) | 2020.11.18 |
---|---|
A * 매우 큰 그래프를위한 알고리즘, 캐싱 단축키에 대한 생각이 있으십니까? (0) | 2020.11.18 |
캡처 및 수락 속성이있는 HTML 파일 입력 제어가 잘못 작동합니까? (0) | 2020.11.18 |
NPM : "npm 링크"모듈을 찾지 못한 후 (0) | 2020.11.18 |
Angular2 이벤트는 어떤 Typescript 유형입니까? (0) | 2020.11.18 |