Okhttp设置http缓存,在没有网络的情况下加载http缓存里面的内容

简介: HTTP_CACHE_FILENAME为缓存地址根路径; private final String HTTP_CACHE_FILENAME = "HttpCache"; private static final Intercepto...
HTTP_CACHE_FILENAME为缓存地址根路径;
private final        String      HTTP_CACHE_FILENAME               = "HttpCache";
    private static final Interceptor REWRITE_CACHE_CONTROL_INTERCEPTOR = new Interceptor() {
        @Override public Response intercept(Chain chain) throws IOException {
            Response originalResponse = chain.proceed(chain.request());
            return originalResponse.newBuilder()
                                   .removeHeader("Pragma")
                                   .header("Cache-Control", String.format("max-age=%d", 60))
                                   .build();
        }
    };

 

然后再okhttpclient初始化的时候加上缓存设置:

mOkHttpClient = new OkHttpClient();
        //cookie enabled
        mOkHttpClient.setCookieHandler(new CookieManager(null, CookiePolicy.ACCEPT_ORIGINAL_SERVER));
        mOkHttpClient.setConnectTimeout(15000, TimeUnit.SECONDS);
        mOkHttpClient.setReadTimeout(15000, TimeUnit.SECONDS);
        mOkHttpClient.setWriteTimeout(15000, TimeUnit.SECONDS);
        mOkHttpClient.setRetryOnConnectionFailure(true);
        //-------------------------------设置http缓存,提升用户体验-----------------------------------
        Cache cache;
        File httpCacheDirectory = new File(BaseApplication.getAppContext().getExternalCacheDir(), HTTP_CACHE_FILENAME);
        cache = new Cache(httpCacheDirectory, 10 * 1024);
        mOkHttpClient.setCache(cache);
        mOkHttpClient.networkInterceptors().add(REWRITE_CACHE_CONTROL_INTERCEPTOR);
        //-------------------------------设置http缓存,提升用户体验-----------------------------------

        mDelivery = new Handler(Looper.getMainLooper());

        if (false) {
            mOkHttpClient.setHostnameVerifier(new HostnameVerifier() {
                @Override public boolean verify(String hostname, SSLSession session) {
                    return true;
                }
            });
        }

  

相关文章
|
机器学习/深度学习 PyTorch 算法框架/工具
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
这篇文章介绍了如何使用PyTorch框架,结合CIFAR-10数据集,通过定义神经网络、损失函数和优化器,进行模型的训练和测试。
961 2
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性
|
移动开发 TensorFlow 算法框架/工具
只保存和加载网络权重
【8月更文挑战第21天】只保存和加载网络权重。
191 2
|
缓存 监控 前端开发
在资源加载优化中,如何利用浏览器缓存提升性能?
通过以上这些方法,可以有效地利用浏览器缓存来提升资源加载的性能,减少网络请求次数,提高用户体验和应用的响应速度。同时,需要根据具体的应用场景和资源特点进行灵活调整和优化,以达到最佳的效果。此外,随着技术的不断发展和变化,还需要持续关注和学习新的缓存优化方法和策略。
740 159
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
1016 15
已经设置好连接器工厂的HTTP连接器,不会在表单控件里取值应用
这是一个关于通过天眼查API获取企业数据的需求介绍。已实现HTTP连接器调用并成功返回数据,但问题在于如何设计表单:使用单行文本输入企业名称后,触发API查询,将返回的相关数据自动填充到指定的单行文本中,期待高手提供解决方案。
|
前端开发 UED 开发者
CSS Sprites和图标字体在网页图标加载优化中的应用。CSS Sprites通过合并多图标减少HTTP请求,提升加载速度
本文探讨了CSS Sprites和图标字体在网页图标加载优化中的应用。CSS Sprites通过合并多图标减少HTTP请求,提升加载速度;图标字体则以字体形式呈现图标,便于调整样式。文章分析了两者的优缺点及应用场景,并提供了应用技巧和注意事项,旨在帮助开发者提升页面性能,改善用户体验。
318 5
|
缓存 负载均衡 安全
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
579 1
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
缓存 JavaScript
Vue加载网络组件(远程组件)
【10月更文挑战第23天】在 Vue 中实现加载网络组件(远程组件)可以通过多种方式来完成。