我们有以下代码,后来用HttpHead方法替换,因为我们只需要撤回网页的标题信息。在更改之后,我们注意到,平均而言,对于相同的网页集,HttpHead返回的时间比HttpGet要长。这是正常的吗?这可能有什么问题?
HttpClient httpclient = new DefaultHttpClient();
// the time it takes to open TCP connection.
httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, this.timeout);
// timeout when server does not send data.
httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, this.timeout);
// the get method
HttpGet httpget = new HttpGet(url);
HttpResponse response = httpclient.execute(httphead);
答案 0 :(得分:2)
这是正常的吗?
这当然看起来有点奇怪。
这里可能有什么问题?
很难说。似乎奇怪的行为在服务器端很可能是。我会检查以下内容:
一种可能的解释是HEAD正在从(慢)数据库或文件系统加载数据。以下GET可以更快,因为数据已经被缓存。 (它可以是服务器代码中的显式缓存,后端数据库中的查询缓存或文件系统缓存。)您可以通过查看如果不之前的GET更慢来测试一个头。