gpt4 book ai didi

caching - HtmlUnit 比 GUI 浏览器慢?

转载 作者:行者123 更新时间:2023-12-04 18:48:06 24 4
gpt4 key购买 nike

为什么 HtmlUnit 比 GUI 浏览器慢这么多?例如,HtmlUnit 加载此页面 http://oltexpress.airkiosk.com/cgi-bin/airkiosk/I7/181002i?O2=2在 14 秒内(当 CSS 支持关闭时),而 FF 在 5 秒内完成(清除缓存后,支持 CSS)。我知道,现代浏览器在处理糟糕的 JS 代码时并没有那么严格,而 HtmlUnit 是这样,但这里的时差仍然是无法容忍的。

任何想法如何加快 HtmlUnit 的工作?有没有人玩过 HtmlUnit 缓存?

最佳答案

回答您关于为什么慢的问题:

这纯粹是因为 HTMLUnit 有很多反对它的地方:

  • 它以一种编译语言运行,该语言没有许多浏览器(如 FireFox)的 native 优化。
  • 它需要格式良好的 XML,而不是 HTML(非严格),这意味着它必须将 HTML 转换为 XML。
  • 然后它必须通过解析器运行 JavaScript,修复代码中的任何问题,然后在 Java 内部进行处理。
  • 同样正如@Arya 指出的那样,它一次请求一个东西,所以很多 javascript 文件会导致速度变慢,很多图像会导致速度变慢。

  • 回答您关于如何加快速度的问题:

    作为一般规则,我禁用(除非需要它们):
  • JavaScript
  • 图片
  • CSS
  • 小程序。

  • 我也得到了源代码并删除了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 实际上缓存页面
  • 关于caching - HtmlUnit 比 GUI 浏览器慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10691638/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com