2016-03-31 2 views
1

私はApple TVでの認証のために残りのAPIをポーリングする必要があるユースケースを持っています。私は90〜120秒間JSONレスポンスが古くなってからJSONレスポンスが得られます。 以下は、私が共有セッションの行動のバグにサーバー側のキャッシュにプロキシから、物事の任意の数のだろう間違っNSURLRequest with cachePolicy ReloadIgnoringCacheDataは古いデータを返します

+0

これは、サーバー側のキャッシュやcloudflareなどのプロキシCDNを使用している可能性があります。郵便配達員のようなものを使用してリクエストを個別に作成しようとしましたか? – Scriptable

答えて

0

行くいただきました!本当に無知mは私のコード

static func getFileNoCache(url:NSURL?, completionHandler:(NSData?, String?)->Void) { 
    if let fileUrl = url { 
     let request = NSURLRequest(URL: fileUrl, cachePolicy: .ReloadIgnoringCacheData, timeoutInterval: 5) 
     let dataTask = NSURLSession.sharedSession().dataTaskWithRequest(request, 
      completionHandler: { data, response, error in 
       if let err = error { 
        // failed ! 
        print("!! Error - Download Failed \n\t\(fileUrl) reason:\(err.localizedDescription)") 
        completionHandler (nil, err.localizedDescription) 
        return 
       } 

       if let statusCode = (response as? NSHTTPURLResponse)?.statusCode { 
        if statusCode == 200 { 
         completionHandler(data, nil) 
        } 
        else { 
         completionHandler (nil, "Message") 
        } 
       } 
       else { 
        completionHandler (nil, "Invalid response") 
        print("!! Error - Downloading EPG Config") 
       } 
     }) 
     dataTask.resume() 
    } 
} 

です。

は、その構成に基づいてセッションを作成し、ゼロにそのURLCACHEプロパティを設定し、独自のセッション構成を使用することによって、完全にキャッシュを無効にしてみてください。

問題が解決しない場合は、キャッシュがあなたのマシンではなく、あなたの最善の策は、(例えば& ignoredParameter = monotonically_increasing_number)URLへのキャッシュバスターを追加することです。