![](/img/trans.png)
[英]How do I associate my iOS app with a particular website URL, for ScreenTime purposes?
[英]How do I invalidate iOS's cache for a particular URL?
使用NSURLSession
的默認緩存,如何使特定URL的緩存無效?
我注意到了NSURLCache
的removeCachedResponseForRequest:
方法,但它接受了一個NSURLRequest
對象,我沒有原始請求。 我是否需要在創建它們時存儲它們,以便我可以將它們傳遞回removeCachedResponseForRequest:
或者我可以創建一個具有相應URL的新URL,即使它沒有相應的目的也是如此。相同的標題字段和原始的其他屬性?
如果您想要更進一步,可以重置要強制重新加載的URL請求的緩存響應。 執行以下操作:
let newResponse = NSHTTPURLResponse(URL: urlrequest.URL!, statusCode: 200, HTTPVersion: "1.1", headerFields: ["Cache-Control":"max-age=0"])
let cachedResponse = NSCachedURLResponse(response: newResponse!, data: NSData())
NSURLCache.sharedURLCache().storeCachedResponse(cachedResponse, forRequest: urlrequest)
由於響應的緩存控制頭hax的最大年齡為0(強制),因此執行此請求時將永遠不會返回響應。
您的答案適用於強制單個請求,但如果您希望有兩個版本的請求,一個強制,另一個依賴於緩存的響應,則需要在強制請求后刪除緩存的響應。
該解決方案證明不會使現有URL的緩存無效,而是設置:
request.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
當您對資源進行下一次請求時,您知道該資源無效。 有些選項可以忽略本地緩存,或者請求上游代理也忽略它們的緩存。 有關詳細信息,請參閱NSURLRequest / NSMutableURLRequest文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.