2017-10-27 6 views
2

は、これは...私が遭遇してきた奇妙なことの一つであるようになってalamofireネットワークリクエストがメモリに保存されていますか?

manager.request(PostRouter.readPosts(pn: pn)).validate().responseJSON { 
     response in 
     switch response.result { 
     case .success(let json): 
      if let json = json as? JSON, 
       let postsArray = json["posts"] as? [JSON], 
       let posts = Post.build(from: postsArray) { 
       completion(posts, nil) 
      } 
      else { 
       completion(nil, NetworkingError.jsonParsingError) 
      } 
     case .failure(let error): 
      completion(nil, error) 
     } 
    } 

同じものを使用して

シンプルなネットワーク要求は、シミュレータや携帯から実行しているかどうか起こりました。

  1. 飛行機モードでリクエストしてください - >インターネットに接続できないというエラーです。
  2. インターネットで再びメイクリクエスト - >ロードの記事
  3. は機内モードで再要求を行う - >負荷の記事インターネットなし。 json値の成功例を返します。

手順3で私はインターネット接続でリクエストを行い、手順2と手順3の間でデータの値を変更しても、新しいデータをフェッチするのではなく、手順2のデータと同じデータが返されます。これは、データがメモリに保存されることを含め、要求全体にほぼ似ています。

実際に新しいデータを取得する唯一の方法は、電話から削除してもう一度インストールすることです。問題はそれから繰り返されます。

これは、私がアプリケーションから行ったすべてのリクエストに発生します。また、Alamofireにリンクされていない問題は、それでも問題が発生するためです。

+0

おそらく 'URLCache'に関連しています –

+0

おそらく問題ではなく機能です。レスポンスのキャッシュヘッダーを確認しましたか? – clemens

+0

私は 'cachePolicy'を' reloadIgnoringCacheData'に設定しましたが、何の違いもありませんでした。 – luke

答えて

1

これはおそらく問題ではなく機能です。財団は自動的に回答をキャッシュします。サーバーがキャッシュを有効にする場合は、応答のキャッシュヘッダー(ExpiresCache-ControlETagなど)を確認します。

+1

+1私の考えは正確です。エンドポイントのExpires設定が将来的なものになる可能性は非常に高いです。 – greymouser

関連する問題