2014-01-29 91 views
0

我正在使用基本上具有UIWebView並從外部資源加載我的Web應用程序的Cordova/Phonegap構建iOS應用程序。 (iOS6 +)NSURLCache在重新啓動後不從磁盤加載

這個web應用程序需要一個450kb的HTML運行,並且我希望在沒有對其進行更改時緩存此文件。 (更改每隔一週)

對於這一點,我在初始化過程中在我的AppDelegate設立NSURLCache:

NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024 
                 diskCapacity:20 * 1024 * 1024 
                  diskPath:nil]; 
[NSURLCache setSharedURLCache:URLCache]; 

應用程序加載完畢後,文件現在緩存,並且我可以找到他們的圖書館/高速緩存/ APPNAME/fsCachedData。

我使用CharlesProxy看到的要求,如果應用程序被加載一次,所有的重載返回304,不修改,該文件

這裏的問題是

每我打開iOS應用程序,儘管該文件位於緩存文件夾中,但它會從服務器再次加載並保存最新版本; If-modified-since在打開後未在第一個請求中設置爲請求參數,但是是以下幾個。

我不確定是否需要明確要求Xcode從磁盤加載NSURLCache,或者我沒有正確設置它。

任何人都可以在過程中看到問題嗎?

更多信息:

緩存控制是私人,最大年齡= 31536000,必重新驗證。 NSURLRequest cachePolicy是NSURLRequestUseProtocolCachePolicy。

謝謝!

回答

1

該問題是由科爾多瓦圖書館造成的。它有一個CDVURLProtocol & CDVUserAgent,它們攔截與現有信息衝突的請求。

要解決此問題,必須防止CDVUserAgent設置UserAgent,但它可能會影響對本地文件的限制。在我的情況下,來源從服務器中檢索。

相關問題