캐싱 수수께끼: iOS 6의 Safari의 선택적 가져오기
iOS 6 출시 이후 개발자들은 Safari의 웹 보기에서 예상치 못한 동작을 경험했습니다. $ .ajax POST 호출은 캐시:false 설정에도 불구하고 고집스럽게 캐시됩니다. 흥미롭게도 이 이상 현상은 호출된 함수가 정적 서명을 사용할 때만 나타납니다.
사전 조사에 따르면 Safari는 Cache-Control 또는 Expires 헤더가 없거나 Cache-Control이 max-age로 설정된 경우에만 POST 응답을 캐시하는 것으로 나타났습니다. =0. 그러나 "Cache-Control: no-cache" 요청을 승인하면 이 동작을 우회하여 캐싱이 완전히 방지됩니다.
POST 메서드에 대해 이 HTTP 사양 조항(섹션 9.5)을 활용하기로 한 Apple의 결정은 개발자를 당황하게 만들었습니다. POST 응답을 캐싱하는 것은 전례 없는 일이 아니지만, 헤더 없이 또는 max-age=0을 사용하여 캐싱하는 Safari의 선택은 기존 브라우저 동작에서 벗어난 것으로 보입니다.
이 캐싱 문제를 해결하기 위해 Apache 구성은 다음과 같습니다.
Header set Cache-Control "no-cache"
그러나 POST 요청에만 "no-cache" 지시문을 선택적으로 적용하는 것이 선호되는 경우 Apache는 다음과 같은 솔루션을 제공합니다.
SetEnvIf Request_Method "POST" IS_POST Header set Cache-Control "no-cache" env=IS_POST
또는 , URL 또는 POST 데이터에 고유 매개변수를 추가하면 정적 함수 서명에 대한 캐싱 문제를 피할 수 있습니다.
위 내용은 \'cache:false\'에도 불구하고 iOS 6에서 Safari 캐시 POST 요청이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!