要回答您关于为什么速度慢的问题:
这纯粹是因为 HTMLUnit 有很多反对它的东西:
- 它以一种编译语言运行,没有像 FireFox 等浏览器的许多本机优化。
- 它需要格式良好的 XML,而不是 HTML(非严格),这意味着它必须将 HTML 转换为 XML。
- 然后它必须通过解析器运行 JavaScript,修复代码中的任何问题,然后在 Java 本身内部进行处理。
- 同样正如@Arya 指出的那样,它一次请求一个东西,所以很多 javascript 文件会导致速度变慢,许多图像会导致速度变慢。
要回答有关如何加快速度的问题:
作为一般规则,我禁用(除非需要它们):
我还获得了源代码并删除了 ActiveX 支持并重新编译。如果您想阻止代码加载那些额外的页面,您可以使用下面的代码给出响应,而无需从网络下载。
WebClient browser;
browser.setWebConnection(new WebConnectionWrapper(browser) {
@Override
public WebResponse getResponse(final WebRequest request) throws IOException {
if (/* Perform a test here */) {
return super.getResponse(request); // Pass the responsibility up.
} else {
/* Give the program a response, but leave it empty. */
return new StringWebResponse("", request.getUrl());
}
}
});
我注意到的其他事情:
- HTMLUnit 不是线程安全的,这意味着您可能应该为每个线程创建一个新的。
- HTMLUnit 确实缓存了页面