iOS 6의 Safari 캐시 수수께끼
iOS 6에 Safari가 도입되면서 $.ajax 호출에 대한 캐시 처리에 대한 우려가 제기되었습니다. 특히 캐시 속성을 명시적으로 false로 설정했음에도 불구하고 PhoneGap 애플리케이션 내에서 수행된 POST 요청이 캐시되고 있습니다.
근본 원인
철저한 조사 결과 다음과 같은 사실이 발견되었습니다. Safari는 다음 기준에 따라 선택적으로 POST를 캐시합니다.
HTTP 사양에 따라 POST 응답은 일반적으로 캐시할 수 없습니다. . 그러나 iOS 6의 Safari는 적절한 Cache-Control 또는 Expires 헤더를 사용하여 캐싱을 허용하는 조항을 활용하는 것으로 보입니다.
해결 방법
Safari가 POST를 캐싱하지 못하도록 방지하려면 요청의 경우 응답 헤더에 "Cache-Control: no-cache"를 설정해야 합니다. 이렇게 하면 Safari가 캐시 우회 지시어를 따르게 됩니다.
모든 POST에 적용되는 전역 솔루션의 경우 서버 구성에 다음 코드를 추가하세요.
<code class="apache">Header set Cache-Control "no-cache"</code>
비활성화하려는 경우 특정 POST를 캐싱하려면 다음 코드를 사용할 수 있습니다.
<code class="apache">SetEnvIf Request_Method "POST" IS_POST Header set Cache-Control "no-cache" env=IS_POST</code>
참고: Safari는 여전히 요청 매개변수가 동일하게 유지되면 POST 요청을 캐시합니다. 캐싱을 방지하려면 호출할 때마다 요청 매개변수를 수정하세요. 또는 요청 URL 또는 POST 데이터에 임의의 매개변수를 추가하여 고유성을 보장할 수 있습니다.
위 내용은 캐시 제어 설정에도 불구하고 iOS 6에서 Safari 캐시 POST 요청이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!