0

バックグラウンド

  • 最近一緒に訪れた Web ページをリンクするアプリを作成しています。

  • これを行うには、Cocoa を使用して最近の URL の HTML を取得する必要があります。

  • 現在、これを行うために非表示の WebView を使用しています。

  • 私が理解しているように、URL がアプリのキャッシュにない場合、これは Web サーバーにヒットしています。

私が欲しいもの

ページが既にアクセスされているため、取得している URL が Safari によって既にキャッシュされている可能性が高くなります。

アプリで最初に URL の Safari のキャッシュをチェックするようにします。そこにある場合は、このデータを使用するだけです。そうでない場合は、Web サーバーにヒットし、ページをアプリのキャッシュに保存する必要があります。

sqlite3 を使用して Safari から cache.db ファイルを解析する必要はありません。この形式が同じままかどうかはわかりません。私は、よりシンプルでより高レベルなものを求めています。

私が試したこと

メソッドを使用して独自の NSURLCache を設定できることは知っていますがinitWithMemoryCapacity:diskCapacity:diskPath:、書き込みによって Safari が台無しになる場合に備えて、これを Safari キャッシュにポイントしようとはしません。

Safari キャッシュを共有する簡単で高度な方法はありますか?

アップデート

あはは。私が見逃していたこれを行う方法があるかもしれないことに気づきました。

withの新しいインスタンスを作成NSURLCacheinitWithMemoryCapacity:diskCapacity:diskPath:、それを Safari キャッシュにNSURLRequestReturnCacheDataDontLoad向けて、ページのロード時に URL リクエストのキャッシュ ポリシーを指定できます。

これが失敗した場合は、通常どおりページを読み込んでみることができます。これを試して、詳細がわかったら質問を更新します。

4

1 に答える 1

1

正直なところ、これはできません。

まず、-[NSURLCache initWithMemoryCapacity:diskCapacity:diskPath:]期待どおりに機能しないことは間違いありません。代わりに、古いキャッシュファイルを吹き飛ばして独自のキャッシュファイルを作成します。潜在的に非常に動揺するSafari。

第二NSURLCacheに、複合キャッシュです。つまり、最初にデータをメモリにキャッシュし、次にある時点でデータをディスクに移動します。したがって、Safariのキャッシュファイルに適切にアクセスできたとしても(アクセスできません)、古いキャッシュデータにしかアクセスできません。最新ではありません。

于 2010-03-10T14:25:52.527 に答える