2016-03-24 5 views
1

私のアプリでは、ユーザーが読む記事を選択すると、EmbedlyのExtract APIを使って記事のコンテンツHTMLを抽出し、NSStringすべてのHTMLタグをトリミングすると記事の全文が得られます。iOS - Embedly APIで派生した記事テキストをキャッシュする方法

埋め込みAPIには、特定のAPI呼び出し制限(月間50,000コール)があります。ユーザーが同じ記事を複数回選択すると、Embedly Extract APIの呼び出しは、その記事の同じURLで複数回行われます。

ユーザーが同じ記事を3回選択した場合、同じURLに3つのEmbedly API呼び出しが無駄になりますか?その場合、記事のフルテキストをキャッシュするにはどうすればよいですか?

同じURLで複数のAPI呼び出しを浪費することが問題になる場合は、ユーザーが2回目に読む記事を選択したときにEmbedlyにAPI呼び出しを行うことができないように設定する必要があります私はすでに記事の全文をキャッシュしています。

私はキャッシングの概念全体を新しくしました。データが変更されそうにないときに使用するべきだと私は読んでいます。これをやり遂げるにはどうすればいいですか? NSUserDefaultsCoreData

キャッシングについて私を混乱させるもう1つのことは、キャッシュされた記事が不要になった場合、たとえばキャッシュされた記事が不要になった場合、アプリの記事/ rssフィードですか?

何か助けや助言をいただければ幸いです。ありがとう。

答えて

1

アプリが稼動している場合にのみキャッシュを実行したい場合は、NSCacheを使用してください。これはNSDictionaryのようなAPIです.iOSのメモリ圧が高い場合、キャッシュは自動的にクリアされます。

おそらくユーザーがアプリを強制終了しても機能する永続キャッシュが必要です。次に、結果を保持するモデルオブジェクトにNSCoderを実装します。または、より簡単にちょうどNSDictionary- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flagを使用してシリアル化してください。

API呼び出しを保存する最適な解決策は、バックエンド側で実際に適切なバックエンドとキャッシュを持つことです(ユーザーが提供するリンクが個人的なデータ、銀行口座などではないと仮定します)。バックエンドはEmbedlyを呼び出す必要があります。したがって、同じユーザーが同じURLをチェックしても、2つのAPI呼び出しは行われません。

+0

残念ながら、この段階では、私のアプリはフロントエンドでバックエンドなしです。ここでは、「NSDictionary」のシリアル化とファイルへの書き込みについて私があなたに教えてくれたソリューションについていくつか読んでいます。メモリ圧が高い場合にもクリアされますか? – Rafi

+1

いいえ、手動で管理する必要があります。しかし、メモリからディスクに保存する場合は、大丈夫です。私はあなたが持っていた弦の量で前に記憶上の問題があったかどうかはわかりません。 – Alistra

関連する問題