WebView가 포함 된 Cocoa 앱이 있습니다. 앱이 설치된 고객 기반으로 인해 10.4 SDK를 타겟팅하고 있습니다. (즉, 나는 Leopard를 요구할 수 없다.)코코아 - WebKit에서 자바 캐싱 방지 - Safari 베타 4 버그?
두 개의 파일 index.html과 data.js.
런타임에는 사용자 입력에 대한 응답으로 data.js 파일을 덮어 쓰며 종종 응용 프로그램의 현재 데이터로 채 웁니다.
가합니다 (data.js 파일이 index.html을 내부 테이블을 채우는 본체로드 index.html 파일에 의해 사용된다. 그 자체가 수정되지 index.html을).을 위해 행 (가정) 방지 내 자주 변화하는 데이터의 웹킷 캐싱, 내가 전화 :
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:indexFileURL cachePolicy: NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
및
[[myWebView mainFrame] loadRequest: urlRequest];
이 타이거와 레오파드에서 잘 작동합니다.
그러나 Safari Beta 4가 설치된 경우 Leopard에서 오류가 발생합니다. webview 내의 index.html 파일 도면은 data.js 파일의 현재 변경 사항을 따르지 않습니다. 자바 스크립트 파일 (data.js)은 URL의 캐시 정책에 관계없이 실제로 캐싱 된 것으로 보입니다.
해결 방법으로 loadRequest 뒤에 [[myWebView mainFrame] reload]를 호출 해 보았습니다.하지만 다른 문제가 발생합니다. (웹 뷰가 전혀 업데이트되지 않습니다.)
누구든지이 문제를 해결하거나 해결할 방법을 제안 할 수 있습니까? 감사.
도움을 많이 주셔서 감사합니다. 방금 접근 방법을 시도했지만 아아, 자바 스크립트는 여전히 캐시됩니다. : – SirRatty
조언을 기반으로 해결 방법을 찾았습니다. index.html 파일을 URL로로드하는 대신 파일의 내용을 NSString으로 읽는 중입니다. 그런 다음 해당 문자열을 수정합니다. ?를 HTML 읽고 "data.js"찾고있는 시점에서 :. data.js = 1234 cacheBaffler을, 나는 다음 웹보기의 메인 프레임에 loadHTMLString를 호출 // 어떤 임의의 숫자 이 잘 작동 흥미 롭. 데이터 포인트 : 파일 이름 수정없이 loadHTMLString은 Safari 4 Beta에 관계없이 Tiger와 Leopard 모두에서 캐싱을 사용합니다 ... 브라우저 테스트 점수에 매우 좋습니다 ... – SirRatty
다행 :) –