iOS 5でキャッシュをクリアする



各iOSアプリケーションには、ファイルを保存するための作業フォルダーがあります。 Cachestmp内容を除くそこからのすべてのアイテムは、iTunesとの接続中にバックアップと同期されます。

iOS 5より前は、システムはCachesおよびtmpコンテンツを削除することはありませんでした。これらは、常に利用可能であると同時に、紛失した場合に再ダウンロードできるデータを保存する唯一の安全な場所でした。 したがって、このデータはバックアップの場所を占有せず、同期を遅くしませんでした。

iOS 5では、iCloudバックアップの出現後、AppleはDocumentsなどの同期フォルダーに大量のデータを保存するアプリケーションと格闘し始めました。 多くの開発者はすでにAppleから次のような手紙を受け取っています。

最後のテストで、[アプリケーション]がドキュメントフォルダーに大量のデータを保存していることがわかりました。

iCloudバックアップは各iOSデバイスのWi-Fiを介して毎日実行されるため、ユーザーの利便性を最大限に高め、アプリケーションに保存されるデータ量を最小限に抑えることが重要です。

購入した音楽、アプリケーション、書籍、写真、デバイス設定に加えて、ドキュメントフォルダーを含むアプリケーションの作業フォルダーのすべてのコンテンツがiCloudと同期されます。

キャッシュ自体と一時フォルダーだけでなく、プログラム自体もiCloudと同期されません。 アプリケーションは、 iCloudストレージの使用規則に従って、指定された場所にデータを保存する必要があります。

指定されたドキュメントを調べ、必要な変更を加え、App Storeでプログラムのバージョンを更新してください。

ドキュメントはすべてを非常に明確に説明しています:

  1. ユーザーが作成した、またはアプリケーションで再作成できないドキュメントおよびその他のデータのみを<Application_Home>/Documentsフォルダーに保存し、iCloudと自動的に同期します。
  2. アプリケーションによって再ダウンロードまたは再作成できるデータは、 <Application_Home>/Library/Caches保存する必要があり<Application_Home>/Library/Caches 。 たとえば、これらはデータベースキャッシュファイル、または雑誌、新聞、地図作成アプリケーションで使用されるものなどのダウンロード可能なコンテンツです。

簡単に聞こえます。ダウンロードできるものをすべてCaches再度移動してください。

Instapaperは、ダウンロードした記事をCachesフォルダーに保存してCachesます。これは、iTunesとの同期を遅くしたり、バックアップのボリュームを不必要に増やしたりしたくないためです。また、データベース全体の更新が頻繁に行われなかったため、ほとんどの人にとって問題になりました。 新しいルールにより、 Caches使用が強制されます。これ以上の選択肢はありません。

ただし、iOS 5には別の重要な変更があります。 Cachestmpバックアップに含まれない2つの場所のみ)は、デバイスのメモリが不足するとクリアされます。

多くのデベロッパーが、iOS 5が一般に公開される前からInstapaperでこの問題を報告していたため、iOS 5を搭載したデバイスの大量販売が開始されると、苦情がいくつになるかが怖いです。

これで、バックアップする必要のない(または新しいルールに従ってバックアップが禁止されている)ファイルを保存する場所は残っていませんが、いつでも削除することはできません。 これは多くのアプリケーションにとって問題です。これらはすぐに思い浮かぶものです。

  1. オフラインで読むためにWeb記事を保存するInstapaperおよびその他のプログラム
  2. 電子書籍を読むためのアプリケーション(ルールが適用される場合はiBookを含む)
  3. ポッドキャストクライアント(iTunesと同期するポッドキャストを除く)
  4. オフラインウィキペディア
  5. オフラインマッピングソフトウェア

キーワードはオフラインです。 インターネットからいつでもすべてをダウンロードできるため、大きな問題はないと言えます。 しかし、そうではありません。

典型的なシナリオ:Instapaperユーザーは、長い旅のためにiPadをコンテンツで満たします。 彼女は映画とポッドキャストのパックを同期し、いくつかの雑誌をダウンロードし、いくつかの新しいゲームを購入するため、最終的にはデバイスに空きスペースがほとんどなくなります。 飛行機に乗る直前に、少女は「エコノミスト 」誌の最新号をダウンロードする必要があることを思い出します(私はユーザーから高い評価を得ています)。 このため、空き領域の量がクリティカルレベルを下回り、トリガーがトリガーされ、バックグラウンドでクリーニングプログラムが起動されます。 ユーザーが気付かないうちに、Instapaperに保存したものはすべて消去されます。 インターネットにアクセスできないフライト中に、彼女はInstapaperを起動し、プログラムの処女を見つけます。

(先週、ほぼ同じことがユーザーの1人に起こりました)。

このため、誰もが苦しんでいます:


インターネットへのアクセスがどれくらいの頻度で困難または不可能かを考えると、すべてが悪化します。


常に高速で信頼性の高いインターネット接続を使用している場合でも、アプリケーション内のデータの突然の削除はいずれにしても問題です。

ユーザーがInstapaperで記事を保存したり、iBooksで本をダウンロードしたり、Instacastでポッドキャストをダウンロードしたりするとき、ユーザーはプログラムが次回起動するときにコンテンツが利用可能になると期待しています。 再ダウンロードが技術的に可能であっても、人はこのコンテンツを自分のファイルと見なします-彼は個人的にここにそれらを置き、いつ、いつ削除するかを決定します。

クリーニングプログラムがすべてを消去すると、アプリケーションがデータを削除したように見えます。 そして、ユーザーはこれがiOS 5の機能であることすら知らない-論理的にアプリケーション開発者を非難する。 これは私たちの責任ではありませんが、間違いなく私たちの問題になります。

明らかに、iOS 5以前のCachesようなファイルを保存する場所があるはずです。iTunesやiCloudにバックアップせずに、同期せずに。 そこでは、プログラム自体がデバイスから削除されるまで、ファイルは変更されません。

テキストの著者は、Instapaperの著者であるMarco Armentです。

Source: https://habr.com/ru/post/J130393/


All Articles