問題タブ [httpresponsecache]
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.
android - インストール済みの HttpResponseCache の使用方法
開発者ガイドに従い、アプリケーションの onCreate() メソッドに次のコードを含めて HttpResponseCache をインストールしました。
ここで、ある時点で、このアプリケーションでアクティビティを起動し、次のコードを使用して URL をフェッチします。
インストールされたキャッシュを使用するように URL を取得するときに何かを行う必要がありますか? それとも、このアプリケーション内で開始されたアクティビティは自動的にそれを使用しますか?
たとえば、このサンプル コードでは、 を呼び出しますconnection.setUseCaches(true)
。それは必要ですか?
android - HttpResponseCache.get を使用するときに使用するヘッダー
httpResponseCacheを使用して、リクエストの一部をキャッシュしようとしています。問題は、リクエストを行う前にリクエストがキャッシュされているかどうかを知りたいということです。
HttpResponseCacheのソースで、(URI、requestMethod、Map< String、List< String > >) を受け取り、cachedResponse を返す get メソッドがあることがわかりました。(URI、「GET」、ヘッダー) のいくつかの異なるセットを試しましたが、ヘッダーが何であるかを理解できないようです。get を使用して cachedResponse を要求するたびに、null が返されます。キャッシュされた応答がありますが。
get メソッドを使用して、リクエストを行う前にリクエストがキャッシュされているかどうかを判断することに成功した人はいますか? あるいは、リクエストを行う前に何かがキャッシュされているかどうかを確認する別の方法がありますか? hitCount を使用して応答がキャッシュから取得されたかどうかを確認できること、および「Cache-Control」、「only-if-cached」を使用してキャッシュされた応答を強制できることを理解しています。キャッシュされているかどうかを確認できるようにしたいだけです。
これを達成するために使用したコードを次に示します。アクティビティの onCreate では、次の方法でキャッシュを初期化します。
そして、次のように使用してみてください。
申し訳ありません/ありがとう/どんな助けでも大歓迎です!
java - HttpResponseCache はイメージでは機能しますが、Json では機能しません
HttpResponseCache を使用して、応答キャッシュ (Web 要求用) を有効にしようとしています。私のアプリケーションでは、ローダーを使用して UrlConnection でリクエストを実行し、InputStream の結果をアクティビティに送信して、画像を表示したり、JsonObject を操作したりします。私の場合、HttpResponseCache は画像の URL で動作し、オフライン時に画像を表示できますが、Json の URL を使用すると、入力ストリームの結果はオンラインでのみ機能し、オフライン時にデータを表示できません。
ローダー クラス:
アクティビティ:
ローダーによって実行された後、イメージの URL によってそのビットマップでイメージを表示できます。ただし、オフラインの場合、Json の URL でデータを表示することはできません。
私は with:addRequestProperty("Cache-Control", "only-if-cached"); を使用しようとしています。「max-stale」、「max-age」、「max-age=600、非公開、再検証が必要」。しかし、何も機能しません。
JsonでHttpResponseCacheを使用する方法を教えてください。
android - Android HttpResponseCache and "Authorization" request header
I'm trying to get HttpResponseCache to cache responses to requests that include an "Authorization" header. I'm including this header because the API I am calling uses basic authentication.
To test this, I'm making the request with WiFi turned on. I'm then turning off WiFi and data and making the request again. I then get a FileNotFoundException when trying to read the response body.
InputStream inputStream = new BufferedInputStream(connection.getInputStream());
If I do the same thing but without the "Authorization" header (to an app on a different server that doesn't use basic auth), my code is able to read the response from the cache.
I am aware that an HTTP cache is not meant to cache a response that was the result of a request including an "Authorization" header, but does that mean that I just can't cache any responses from this server without writing my own cache? Is there any known way around this or to override this behaviour in HttpUrlConnection / HttpResponseCache?
Thanks in advance!
android - Cache-Control ヘッダーに関して、共有キャッシュのように動作する HTTPResponseCache を停止できますか?
HTTPResponseCache
アプリに組み込まれている (API 経由でリクエストを行う) を使用しようとしていますが、ヘッダーを含めてHTTPURLConnection
リクエストされた応答をキャッシュするのに問題があります。Authorization
応答をキャッシュする唯一の方法は、サーバーの応答ヘッダーに「パブリック」を明示的に配置することです(これも機能する可能性がありますが、試していませんが、明示的に結果をキャッシュに入れません)。しかし、これは、中間プロキシが応答をキャッシュして他のクライアントに提供することを意味します。これは私が望んでいることではありません。Cache-Control
s-maxage
private
私の理解では、ユーザーエージェントキャッシュはAuthorization
、デフォルトでヘッダーまたはヘッダーで要求された応答をキャッシュしますprivate
。HTTPResponseCache
は、ユーザー エージェント キャッシュではなく、ヘッダーの解釈方法において共有キャッシュのように動作しているようです。または、キャッシング標準に関する私の理解は正しくありませんか?
キャッシュをユーザー エージェントの HTTP キャッシュのように動作させる方法はありますか?
これは私のインストールコードで:
ここで何か違うことをする必要がありますか?それとも、リクエストにユーザー エージェント情報を含める必要があるのでしょうか?