1

NimbusプロジェクトでNINetworkImageViewを見ていましたが、デフォルトのキャッシュ設定がであることに興味がありました。setPathToNetworkImageを呼び出して画像をロードすると、それはグローバルキャッシュに入れられますか?同じpathToNetworkImageを使用して別のnetworkImageViewを作成し、ネットワークリクエストを回避した場合、同じ画像であることを認識できるほど賢いですか?

デフォルトでメモリまたはディスクに保存されますか?デフォルトのキャッシュ期間はどれくらいですか?

4

1 に答える 1

6

setPathToNetworkImageを呼び出して画像をロードすると、それはグローバルキャッシュに入れられますか?

はい。デフォルトでは、Nimbusのグローバルメモリ内イメージキャッシュに入ります。バックグラウンドで行われていることは次のとおりです。画像が読み込まれ、画像がUIスレッドに返される前に、生の画像がディスクキャッシュに保存されます[1]。ロードスレッドが戻ると、生の画像がUIImageViewに設定され、生の画像もメモリ内のキャッシュに保存されます。

同じpathToNetworkImageを使用して別のnetworkImageViewを作成し、ネットワークリクエストを回避した場合、同じ画像であることを認識できるほど賢いですか?

はい。構成可能なプロパティがすべて同じである限り[2]、イメージが存在する場合は、すぐにメモリ内キャッシュからイメージをロードします。画像のキャッシュキーがどのように生成されるかは、https ://github.com/jverkoey/nimbus/blob/master/src/networkimage/src/NINetworkImageView.m#L144で確認できます。

[1]これは、ディスクへの保存が、UIスレッドをブロックしたくないブロック操作であるためです。

[2] 2つのネットワークイメージビューが同じURLをロードしているが、1つが異なるコンテンツモードを持っている場合、メモリ内のキャッシュキーが異なるため、イメージを2回処理する必要があります。そうは言っても、ディスクキャッシュキーには画像のURLのみが使用されるため、ネットワークにアクセスして画像をキャッシュし、2番目のネットワーク画像ビューでディスクから画像を読み込んで他のコンテンツでトリミングすることになります。モード。

余談ですが、2つのキャッシュプロパティのドキュメントが壊れているように見えるので、これを修正する必要があります。

于 2011-09-03T03:19:26.580 に答える