问题标签 [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.

0 投票
3 回答
10482 浏览

android - 需要一个Android中HttpResponseCache的例子

嗨,我正在尝试使用 Android 4 中引入的 HttpResponseCache。文档确实清楚地讨论了如何安装缓存,但我完全不知道如何缓存从网上下载的图像。之前我使用 DiskLruCache 来缓存它们. 有人会向我指出一些使用 HttpResponseCache 的工作代码示例吗?

编辑:- 有人可以告诉我我在这里做错了什么:-

然后在 TheMainListFrag 的加载器中,我执行以下操作:-

当我连接到互联网时,它工作正常,并且在目录 http-上面命名的缓存目录中,我也可以看到文件。但是当我没有连接到互联网时,数据拒绝加载。

当我从网络加载图像时,我看到名为 .tmp 的缓存文件,我相信根据 DiskLruCache 将其称为脏文件。

如果您希望我提供任何其他信息,请告诉我

0 投票
1 回答
812 浏览

android - HttpResponseCache 不缓存文件

我正在尝试使用 HttpResponseCache 缓存此文件:http : //media.admob.com/sdk-core-v40.js。基本上我调用 getFileFromUrl 函数两次,以便第一次从 Internet 获取资源,第二次从缓存中获取资源。

但是,对于这两种方法,它都会出现此错误:“资源未缓存!java.io.FileNotFoundException: http: //media.admob.com/sdk-core-v40.js ”。这是否意味着该文件未缓存并且无法访问?代码有什么问题?

0 投票
2 回答
496 浏览

java - android 2.3.6版本中的NoClassDefFoundError(HttpResponseCahe)

我开发了一个 Android 应用程序,它在 4.0 及更高版本中运行良好,但是当涉及到 2.3.4 版本时,它给出了关于 Responcecache 的异常。我按照 github:- https://github.com/candrews/HttpResponseCache进行操作。我遇到了在 2.3.4 和 2.3.6 中运行的异常。

如何解决这个问题请帮助我。

0 投票
0 回答
533 浏览

android - 缓存 HTTP 响应 (HttpResponseCache)

我正在尝试使用 HttpResponseCache 来缓存使用 HttpURLConnection 发送的每个 HTTP 请求。
但即使请求第二次到达资源,命中计数也始终为零。为什么它没有命中缓存?

命中数:

用法:

这就是我启用缓存的方式:

0 投票
1 回答
920 浏览

java - java.lang.NoClassDefFoundError 与 HttpResponseCache 和 DiskLruCache

我正在尝试在一个新项目 Android 中测试这个缓存库。
当我运行该项目时,我得到了这个 Logcat:

我从我的 libs 文件夹中的 Craig Andrews 的项目 HttpResponseCacheJake Wharton 的 DiskLruCache复制了两个 jar :
项目文件

这是我的 MainActivity.java:

我在其他线程中读到它的顺序问题,所以在 Java Build Path 的 Order & Export 选项卡中,我把它放在首位: 构建路径
订购和出口

我清理了项目,重建并且没有任何工作,问题仍然存在......
任何想法......??

谢谢。

0 投票
1 回答
815 浏览

java - 解析 Android HttpResponse 缓存更新?

我实际上是在尝试在我的 android.so 中启用 HttpResponse 缓存,所以我通过调用此方法在 onCreate 方法的主要活动中启用了我的缓存:

但是如果服务器数据被修改,我希望我的缓存被更新我在官方 developer.android 中找到了这部分代码

我的问题是如何跳过更新?我的意思是如何从缓存中获取数据?

这是我的 getJson 方法

如您所见,如果服务器数据更新,我可能会获得陈旧的数据。我想对其进行优化以测试 http 响应标头以检查更新

0 投票
0 回答
2097 浏览

android - 在android的HttpUrlConnection中缓存响应

在我的应用程序中,我实现了 HttpResponseCache 来缓存响应,以便可以使用它而不是访问服务器。对于特定的 api ,服务器将标头 Cache-Control 作为 no-cache;must-revalidate 返回。它也有标题 ETag。问题是这个 api 的响应没有被缓存。结果,每次我请求 api 时,服务器都会返回 200。 no-cache,must-revalidate 是否意味着响应不会/不应该被缓存?

请在下面找到 http 请求的请求和响应标头:

请求标头:

GET HTTP/1.1 User-Agent Accept application/json Cache-Control max-age=0 Cookie
Host
Connection Keep-Alive Accept-Encoding gzip

响应标头:

HTTP/1.1 200 OK 服务器 Apache-Coyote/1.1 Cache-Control no-cache, must-revalidate ETag "c683a0301c68c566fcc706f5cd82f1f8" Content-Type application/json;charset=UTF-8 Transfer-Encoding chunked Content-Encoding gzip Vary Accept-Encoding Date格林威治标准时间 2014 年 2 月 24 日星期一 04:44:03

发送 HTTP_GET 请求:

0 投票
1 回答
1709 浏览

android - HttpUrlConnection 与 HttpResponseCache 或 Volley 在 android 中实现更好的缓存

我正在为 Android 开发一个应用程序,其中有很多对服务器的 http 请求来获取一些数据。我的回复包括大量图片以及 JSON 格式的文本。

我想使用适当的缓存(如 Google Play、Google plus 和其他应用程序使用)使我的应用程序运行得更快。

我已经了解 android Volley库,并尝试并开发了一些示例进行测试,它的服务非常好,并且可以按预期完美地缓存我的图像。但是最近在互联网上进行相同的研究时,我开始了解您为请求响应HttpResponseCache安装缓存的类。Http

现在我有点困惑我应该去哪个,我已经尝试过 Volley 但没有尝试使用HttpResponseCache.

我的问题是:

他们在内部做同样的事情吗?

如果没有,哪个会更好。

您的专家建议或经验将为我节省大量时间。

0 投票
0 回答
808 浏览

android - 当服务器返回 HTTP_NOT_MODIFIED 时,httpUrlConnection 不返回缓存响应

我有一个 api 请求,它返回响应以及响应标头 Last-Modified 和 Date。我正在使用 HttpUrlConnection 发出 HTTP.GET 请求。我还使用 HttpResponseCache 来缓存响应。

当服务器返回响应码 200 时,响应被缓存。我现在面临两个问题。

First :当第二次请求 api 时,HttpUrlConnection 将 'Date' 标头的值设置为 'If-Modified-Since' 标头,而不是使用 'Last-Modified' 标头的值。

我通过手动设置缓存响应中的 If-Modified-Since 标头解决了这个问题。所以现在服务器在第二次请求 api 时返回 304。

我的第二个问题来了。

第二:通常如果服务器返回 304 并且响应被缓存,则 HttpUrlConnection 返回缓存的响应并且响应代码将为 200。这在响应中包含 ETag 标头的 api 响应的情况下可以正常工作。但是对于只有 Last-Modified 标头的响应,HttpUrlConnection 本身将响应代码返回为 304,并且不返回缓存的响应。

有没有人遇到过类似的问题?

请在下面找到 api 请求的 java 实现。

0 投票
2 回答
158 浏览

java - 为什么对 HttpResponseCache 使用反射?

文档HttpResponseCache有一个部分:

使用早期版本

这个类是在 Android 4.0 (Ice Cream Sandwich) 中添加的。使用反射来启用响应缓存而不影响早期版本:

您可以在关于 SO 的问题(例如此处)和网络上的示例中通过反射查看此调用。我还接管了包含这个确切片段的代码来设置缓存(包括注释,所以它可能只是 copypasta)。但是,我不太明白为什么你必须在这里使用反射。

通常,当我想使用在我定义的某个 API 级别添加的方法时minSdkVersion,我会使用以下模式:

那么为什么这不是HttpResponseCache. 使用反射有什么好处?它当然不会增加我的代码的可读性。HttpResponseCache以这种方式使用反射时,实际上是否在 ICS 下工作?

编辑:我这里没有旧的 Android 设备,我的模拟器根本拒绝启动,所以我现在不能简单地测试它。也许它只是在没有反射的情况下可怕地崩溃。