【问题标题】:OKHttp HEAD Requests - Optimizing for SpeedOKHttp HEAD 请求 - 优化速度
【发布时间】:2019-02-11 23:20:58
【问题描述】:

我需要构建一个 URL Head 服务,以尽快提供任何 URL 的所有标头。

我已经编写了单元测试和仪器测试,看看 OKHttp 是否能够为我做这件事。

这是测试

class GetHeadersTest {
    @Test
    fun GetHeaders() {
        val startTime: Long = System.currentTimeMillis()
        println("START: ${startTime}")
        val testHeaderURL = "https://s3-eu-west-1.amazonaws.com/somefolder/image37.jpg"
        println("URL VARIABLE: ${System.currentTimeMillis() - startTime}ms")

        val client = OkHttpClient()
        val clientTime = System.currentTimeMillis() - startTime
        println("OK HTTP CLIENT: ${clientTime}ms")

        val request = Request.Builder().url(testHeaderURL).head().build()
        val requestTime = System.currentTimeMillis() - startTime
        println("OK HTTP REQUEST: ${requestTime}ms")

        val response = client.newCall(request).execute()
        val responseTime = System.currentTimeMillis() - startTime
        println("OK HTTP RESPONSE: ${responseTime}ms: $response")

        println("END: ${System.currentTimeMillis()}")
    }
}

结果让我很惊讶,来自浏览器世界。

START: 1548683216245
URL VARIABLE: 0ms
OK HTTP CLIENT: 357ms
OK HTTP REQUEST: 370ms
OK HTTP RESPONSE: 750ms: Response{protocol=http/1.1, code=200, message=OK, url=https://s3-eu-west-1.amazonaws.com/somefolder/image37.jpg}
END: 1548683216995

我在每个请求中都实例化一个新的OkHttpClient,在正常情况下我显然不会这样做。然而,一个简单的 HEAD 请求的 380 毫秒响应时间似乎很极端。结果在单元测试和仪器测试中是相同的。

我用http试了一下,结果如下

START: 1548683574373
URL VARIABLE: 0ms
OK HTTP CLIENT: 338ms
OK HTTP REQUEST: 350ms
OK HTTP RESPONSE: 508ms: Response{protocol=http/1.1, code=200, message=OK, url=http://s3-eu-west-1.amazonaws.com/somefolder/image37.jpg}
END: 1548683574881

虽然这种方法相当无用,因为现在大多数 url 都是 https,但时间正在接近我对 HTTPS HEAD 请求的预期。

所以问题是 - 我怎样才能让这更快?与浏览器世界相比,SSL 连接时间似乎非常慢。由于是 HEAD 请求,我可以放宽 SSL 条件并忽略任何响应吗?

OKHttp 是用于发出 HEAD 请求的错误包吗?我应该直接去URLConnection吗?

非常感谢任何人的任何建议。

【问题讨论】:

    标签: android okhttp3


    【解决方案1】:

    答案是这种请求不要使用OKHttp。

    我在 java URL 上写了一个 Kotlin 扩展函数,它的速度是原来的两倍。

    【讨论】:

      猜你喜欢
      • 2021-12-12
      • 1970-01-01
      • 2016-10-31
      • 2011-08-01
      • 2016-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多