問題タブ [nsurlcache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nsurlconnection - NSURLResponseがキャッシュからのものかどうかを知る方法は?
特定のフォルダーにNSURLCacheを設定し(../../アプリケーションサポート/オフラインで、OSによってランダムに削除されないようにします)、NSURLRequestReturnCacheDataElseLoadポリシーを使用してNSURLRequestを送信します。
NSURLConnectionDelegateに準拠するクラスによって処理される応答が、キャッシュまたはネットからのものであることをどのように判断できますか?
ios - iOS 6.1 で NSURLCache がクラッシュする
iOS 6.1 を使用すると、起動直後にいくつかの HTTP リクエストを作成しようとすると、定期的にアプリがクラッシュしますが、6.1 未満の OS では問題なく動作します。
Queue : から呼び出されEXC_BAD_ACCESS
た関数でクラッシュが発生してい
ます。初回を除いて、アプリが起動されるたびに。strlen
com.apple.CFURLCACHE_work_queue
アプリの起動直後に NSURLCache をクリアすることで問題を解決できました。
他の誰かがこれらのクラッシュを経験していますか? これらのクラッシュの原因となっているアプリケーション コードに問題がある可能性はありますか? それとも、これはアップルに提出されたバグですか?
ios - Webサービスから複数の画像をより速くロードする
JSONWebサービスからアプリに複数の画像をロードしたい。これらの画像は、私のアプリの「ストア」のサムネイルとして機能します。そのため、ユーザーがボタンをクリックして「ストア」に移動すると、リクエストが送信されます。そして、このリクエストは、ユーザーがボタンをクリックするたびに繰り返されます。
ここでは問題はありませんが、JSONのデータが大量に増えると問題が発生します。以前は、5つの画像のみを読み込んでいました。現在、少なくとも18枚の画像を読み込んでいます。画像が100倍以上になると、これらは実際の問題を引き起こす可能性があります。
画像のキャッシュに使用することを検討してNSURLCache
いますが、画像に更新があるかどうかをどのように知ることができますか?新しい画像が追加された、または現在の画像が使用されなくなったとしましょう。誰かが私にこれにアプローチするための最良の方法について何かアイデアを与えることができますか?
ios - NSCachedURLResponseはオブジェクトを返しますが、UIWebViewはコンテンツを解釈しません
UIWebViewにリクエストを送信しています。ロードされたWebページにAJAX呼び出しがあります。ユーザーがログインしているかどうかを判断するには、AJAXトラフィックを分析する必要があります。これを行うために、AppDelegateにNSURLCacheをインストールしました。
このMYURLCacheクラスは、Webビューを通過するトラフィックを正しく受信します。AJAX呼び出しのみを終了できます。次に、AJAX呼び出しの独自の要求を生成します。これは、Webサーバーから完全に細かい応答を返します。したがって、ここで行う最後のステップは、NSCachedURLResponse戻りオブジェクトを作成することです。私もこれを管理しましたが、オブジェクトを返すときにWebビューは何もしません。nilだけを返すと、WebViewはすべてを正常にロードします(nilはNSURLCacheのメッセージであり、何もキャッシュされないため、WebViewはそれ自体でロードを開始する必要があります)。
ios - UIWebView が無期限にメモリを割り当てないようにする (NSURLCache は明らかに機能していません)
UIWebView キャッシュがどのように機能するかを理解しようとしています。私の目標は、UIWebViewによって割り当てられたメモリを(少なくとも、可能な限り)管理できるようにすることであるため、メモリが無期限に増加し、これが原因でアプリが強制終了されるのを回避します。
他のスタックオーバーフローの質問を読んで webを検索した後、 NSURLCache sharedURLCacheを試すことにしましたが、それが実際にどのように機能するのかわかりません。
私のテストシナリオは次のとおりです。
内部に UIWebView を持つ単一のビューがあるiOS 5用のテスト アプリを実装しました。この UiWebview は、次のようにローカルのindex.htmlファイルをロードします。
このindex.htmlファイルには、Flickr から JSON をダウンロードし、パブリック フィードにアップロードされた最後の画像を含む JS スクリプトがあります。各画像はリストに追加されます。フィードから 1000 枚の画像がダウンロードされるまで、このプロセス全体が毎秒繰り返されます。コードを参照してください。
最後に、AppDelegate で、この投稿に書かれているように sharedURLCache を設定しました。
しかし、それが起こるはずだったにもかかわらず、計測器を開いて割り当てをチェックするアプリを実行すると、画像をダウンロードしている間 (最大 20MB) メモリが増え続けます。この sharedURLCache を使用して、ダウンロードした画像をキャッシュします。
誰かが私が間違っていることを知っていますか? 私は何か誤解していますか?ページの読み込みが間違っていますか? UIWebView は、JS に読み込まれた画像に別のキャッシュを使用しますか?
あなたの考えを教えてください。この sharedURLCache がどのように機能するか、UIWebView がそれを使用して URLRequest や画像などをキャッシュする方法を理解する必要があります。コントロールなしでメモリを割り当てることができる UIWebView を使用するアプリは必要ありません。
ios - IOS は WebView のロードをインターセプトし、Web ページのリソースをディスクに保存します
Web ビューの読み込みに使用するためにダウンロードされている個々のリソースを追跡できることを読みました。ここを参照してください。私がやりたいことは、各リソースを傍受してファイルに保存することです。次に、ユーザーが Web ページを保存したい場合は、保存されたリソースと html を取得し、永続的な場所に保存します。しかし、私は初心者で、これを設定する方法がわかりません。誰か助けてくれませんか?
ios - iOS NSURLCache / NSURLConnection 304 + max-age
Just out of curiosity does NSURLCache just completely ignore the max-age cache control header on 304 responses? I have a system setup using etags and max-age, that in theory should only send a request to the web service every 10 seconds based on the max-age setting in the header. Now this works when iOS gets the 200 response on initial load, but not when it receives the 304 response, it just continues to make the request to the server despite the max-age value. Based on what I've read in the past, what I'm trying to do is COMPLETELY valid http to ease server resources.
Sometimes I dislike the magic in the background.
ios - NSURLResponseは、要求した範囲を無視してContent-Rangeを返します
ファイルをダウンロードするときに、ダウンロードを再開できるようにしたいと思います。例えば:
これにより、次のようなヘッダーを持つgetリクエストが生成されます。
範囲:bytes = 1000-
最初の206の応答は、次のようなヘッダーと値(からダンプされたallHeaderFields
)を持つ、開始を要求したチャンクを提供することを期待します。
"Content-Range"="バイト1000-340197/340198";
しかし、時々それは先にジャンプして、代わりに次のようなものを返します:
"Content-Range"="バイト32000-340197/340198";
1000〜32000のバイトが必要で、それが私に与えられなかったので、これは本当に悪いことです。
サーバーにカールすると、要求したセクションが返されるため、サーバーエラーが発生しないことはわかっています。また、wiresharkを使用すると、サーバーにパケットが送信されません。したがって、これはiOS側の問題であり、おそらくNSURLCache
ios - NSURLCache を使用して、オフライン時にキャッシュされた API 応答を返す方法 (iOS アプリ)
私が研究しているがあまり進歩していないいくつかのことについて、誰かが光を当ててくれることを願っています。
NSURLCache を利用して、iOS アプリ内で行った API 呼び出しに対してキャッシュされた応答を返したいと思います。デバイスがオンラインの場合、キャッシュされた応答が最新のものであればそれを返し、それ以外の場合はリモートから取得したいと考えています。デバイスがオフラインの場合、年齢に関係なく、キャッシュされた応答 (存在する場合) をすぐに返したいと思います。
を使用してAFNetworking
います。私が行っている API 呼び出しは、私が制御するサーバーに対するものです。プロトコルは HTTPS です。現在、Cache-Control
応答ヘッダーは"max-age=0, public"
. 現在、キャッシュ関連のリクエスト ヘッダーを設定していません (すべきでしょうか?)。要求のキャッシュ ポリシーをNSURLRequestReturnCacheDataDontLoad
オフライン時に設定NSURLRequestUseProtocolCachePolicy
し、オンライン時にはデフォルトを使用します。Cache.db
また、ディスク上のデフォルトでリクエストとそのレスポンスを確認できます。ただし、オフラインの場合、すべてのリクエストが失敗します(キャッシュされたように見えるにもかかわらず、キャッシュされた応答は使用されません/返されます)。
http://nshipster.com/nsurlcache/sharedURLCache
に従って、 aを初期化し、 AFNetworkingブロックを次のようにdidFinishLaunchingWithOptions
設定します。setCacheResponse
このトピックに関するこれらの投稿や他の投稿を読みました。
http://petersteinberger.com/blog/2012/nsurlcache-uses-a-disk-cache-as-of-ios5/ http://blackpixel.com/blog/2012/05/caching-and-nsurlconnection.html
標準を使用する前にこの機能を成功裏に達成した人がいるかどうか疑問に思っていますNSURLCache
(成功例にも興味がSDURLCache
ありますが、Peter S. は、iOS5 の時点でディスク キャッシングがサポートされているためSDURLCache
、もはや必要ではないと述べています。デフォルトの組み込みキャッシュ)。
前もって感謝します!