标签: httpresponsecache

需要Android中的HttpResponseCache示例

嗨我正在尝试使用Android 4中引入的HttpResponseCache.文档确实谈到了如何安装缓存,但我完全失去了如何缓存从网上下载的图像.早期我使用的是DiskLruCache来缓存它们.有人会指出我使用HttpResponseCache的工作代码的一些例子.

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

MainActivity.java
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final long httpCacheSize = 10 * 1024 * 1024; // 10 MiB
    final File httpCacheDir = new File(getCacheDir(), "http");
    try {
        Class.forName("android.net.http.HttpResponseCache")
            .getMethod("install", File.class, long.class)
            .invoke(null, httpCacheDir, httpCacheSize);
        Log.v(TAG,"cache set up");
    } catch (Exception httpResponseCacheNotAvailable) {
        Log.v(TAG, "android.net.http.HttpResponseCache not available, probably because we're running on a pre-ICS version of Android. Using com.integralblue.httpresponsecache.HttpHttpResponseCache.");
        try{
            com.integralblue.httpresponsecache.HttpResponseCache.install(httpCacheDir, httpCacheSize);
        }catch(Exception e){
            Log.v(TAG, "Failed to set up com.integralblue.httpresponsecache.HttpResponseCache");
        }
    }
    TheMainListFrag …
Run Code Online (Sandbox Code Playgroud)

android caching httpurlconnection httpresponsecache

12
推荐指数
1
解决办法
9844
查看次数

Laravel 5.1面向对象的ajax响应缓存

我正在使用Laravel 5.1项目,使用大量的ajax调用返回html块.

为了优化网站的速度,我想实现私有和公共响应缓存.使用以下代码可以正常工作:

        return response()
        ->json($result)
        ->header('Cache-Control', 'public, max-age=300');
Run Code Online (Sandbox Code Playgroud)

然而,以这种方式使用它不会占用在300秒内更新的帐户对象.

当且仅当返回的对象已更新时,是否有可能允许我清除请求的响应缓存?

php laravel httpresponsecache

9
推荐指数
1
解决办法
874
查看次数

我可以阻止HTTPResponseCache在Cache-Control标头方面表现得像共享缓存吗?

我试图HTTPResponseCache在我的应用程序中使用内置(通过HTTPURLConnectionAPI 发出请求),但是在尝试使用包含Authorization标头来请求缓存任何响应时遇到问题.

我可以让它缓存在响应的唯一方法是明确提出"公开"在Cache-Control服务器上的响应头(s-maxage可能工作太,没试过,但明确将private导致没有缓存); 但这意味着任何中间代理都会缓存响应以服务于其他客户端,这不是我想要的.

我的理解是,用户代理缓存会Authorization默认缓存标头请求的响应或private标头.看起来HTTPResponseCache它在解释标头而不是用户代理缓存方面就像共享缓存一样.或者我对缓存标准的理解不正确?

有什么办法可以让缓存像用户代理HTTP缓存一样工作吗?

这在我的安装代码中:

public static void setupCache(Context context, long httpCacheSize){
  File httpCacheDir = new File(context.getCacheDir(),"http");
  HttpResponseCache.install(httpCacheDir, httpCacheSize);
}
Run Code Online (Sandbox Code Playgroud)

我需要在这里做些不同的事吗?或许我需要在我的请求中包含一些用户代理信息?

android caching http cache-control httpresponsecache

6
推荐指数
1
解决办法
237
查看次数

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

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

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

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

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

这是我的第二个问题.

第二:通常如果服务器返回304并且响应被缓存,则HttpUrlConnection返回缓存的响应,响应代码将为200.这在响应中具有ETag头的api响应的情况下根据需要起作用.但是对于仅具有Last-Modified标头的响应,HttpUrlConnection将响应代码返回为304本身,并且不返回缓存的响应.

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

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

URL url = new URL(this.url);
HttpURLConnection conn  = getProtocolType(url);
conn.setRequestMethod("GET");
conn.setReadTimeout(timeOut);
conn.setConnectTimeout(timeOut);
conn.setInstanceFollowRedirects(true);
conn.setRequestProperty("User-Agent", this.userAgent);
conn.setRequestProperty("Cache-Control", "max-age=0");
conn.setUseCaches(true);
conn.setDefaultUseCaches(true);
conn.connect();
this.responseCode = conn.getResponseCode();
Run Code Online (Sandbox Code Playgroud)

android httpurlconnection httpresponsecache

5
推荐指数
0
解决办法
741
查看次数