Okhttp3 网络拦截器链优化

问题描述 投票:0回答:1

我需要一点帮助才能更清楚地理解事情。我有一个网络拦截器链,我将缓存作为要添加到链中的标头之一传递。我研究了缓存控制,想知道是否有任何选项可以优化应用程序端以避免 websocket 超时。不知道在整个链条中,接收回复所需的时间最长,我想指出它。

为了可见性,链目前看起来像这样

override fun intercept(chain: Interceptor.Chain): Response = chain.run {
        proceed(
            request()
                .newBuilder()
                .addHeader(app, version)
                .addHeader(device, someDevice)
                .addHeader(cache, CACHE_MAX_AGE})
                .build()
        )
    }

有人可以解释一下使用缓存控制

.cacheControl()
是否比使用
.addheader()
将缓存作为标头参数传递有任何优势。

对链条做了一些研究。

这就是我想尝试的,

  1. 通过分离链并查看它们完成所需的平均时间,为当前链中完成最长的操作/标头提供足够的时间

  2. 采取逐步的方法,一次传递一个,然后构建整个对象,在每个步骤中留出足够的时间到其各自的时间能够完成,因为每个人的情况不一致并且波动给定的网络环境/情况可以进行调整

  3. 或者,如果我知道这条链目前需要多长时间才能完成,就像在一堆不同的用例中一样,我可以估计我的所有链在网络上完成的总时间,然后给它完成的时间。

请让我知道想法,或者如果我还很遥远并且这一切都不可行/最佳,或者如果有人有任何其他想法。

android kotlin networking caching okhttp
1个回答
0
投票

通过拦截器链返回响应的时间确实可以忽略不计。

您的注意力最好集中在提高缓存命中率和减少传输的数据总量上。

© www.soinside.com 2019 - 2024. All rights reserved.