【问题标题】:Get Total Page Size Through PhantomJs通过 PhantomJs 获取总页面大小
【发布时间】:2014-03-17 15:26:08
【问题描述】:

我使用phantomjs(命令行界面)来获取HAR数据,为此我使用netsniff.js,使用如下命令:

phantomjs netsniff.js YourURL > out.har

但是,这在输出文件中为我提供了正确的 HAR 数据 (out.har) 并使用该 HAR 数据计算页面大小,该页面大小来自 "log > entries > response > bodySize",存在于 "out.har" 中,计算后得到的总大小与运行 URL 时得到的大小不匹配浏览器和在底部执行检查元素后的网络活动中显示(已传输 333kb)。

而且在 HAR 数据中,我没有得到 "Content-Length",我认为如果文件的状态为 (304 not modified also),它会给出正确的大小,是否正确??
如果不是如何获得正确的页面大小??。

【问题讨论】:

    标签: javascript phantomjs


    【解决方案1】:

    我没有使用netsniff.js,但我有一些建议:

    1. 尝试使用page.clearMemoryCache();禁用缓存

    2. phantomjs 还是有关于bodySize 的bug,所以我两个都用了

    > 函数 getRealSize(响应) { > 变量 tmp,大小; > for(var i=0; i tmp = response.headers[i]; > if(tmp.name == '内容长度') { > 返回 parseInt(tmp.value, 10); > } > } > } > 大小 = getRealSize(响应) ||响应.bodySize;
    1. Content-Length gzip 进不去,所以禁用 gzip:
    > page.customHeaders = { > '接受编码': 'gzip;q=0' > };

    (其实bodySize是绝对不能用的,但我没有测试所有情况)

    它对我有用。

    【讨论】:

    • 在我这边,尺寸增加了,但数字仍然与浏览器显示的数字不匹配。
    • 我添加了第 3 步来禁用 gzip 以获得正确的大小,它对我有用。
    • 非常感谢。这对我有帮助。我会从示例代码中取出“|| response.bodySize”。你永远不想使用 response.bodySize。
    • 我想在这里补充一件缺失的作品。如果您正在处理一个经过 gzip 压缩的站点,您可能会遇到问题,并且您需要使用 phantomjs 2:page.customHeaders = { "Accept-Encoding": "identity" };见这里:github.com/ariya/phantomjs/issues/10930
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 2012-08-18
    • 2011-02-25
    • 2020-03-02
    相关资源
    最近更新 更多