> 웹 프론트엔드 > JS 튜토리얼 > \'cache:false\'에도 불구하고 iOS 6에서 Safari 캐시 POST 요청이 발생하는 이유는 무엇입니까?

\'cache:false\'에도 불구하고 iOS 6에서 Safari 캐시 POST 요청이 발생하는 이유는 무엇입니까?

DDD
풀어 주다: 2024-11-03 21:12:03
원래의
266명이 탐색했습니다.

Why Does Safari Cache POST Requests in iOS 6 Despite

캐싱 수수께끼: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿