我需要建立一个URL头服务,以最快的速度提供所有标头的任何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
。然而一个380ms的响应时间为一个简单的HEAD请求似乎极端。结果是单位和仪表测试相同。
我试着用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
虽然这种方法是最网址,这几天都在HTTPS相当无用的,时机正在接近我期望一个HTTPS HEAD请求。
所以,问题是 - 我怎么能做出这样得更快?这似乎是对SSL连接的时间相比,浏览器的世界很慢。因为它是一个HEAD请求,我可以放松SSL条件和忽略任何反应?
是OKHttp错包制作HEAD请求?我应该直接去URLConnection
?
任何人的任何意见大加赞赏。
答案是不使用OKHttp对于这种要求。
我写关于java的URL科特林扩展功能,而不是,这是快两倍。