javascript - 如何以编程方式计算网页传输的大小?Chrome 扩展程序
问题描述
我正在开发一个 chrome 扩展,我想以编程方式计算这个值(检查屏幕截图)。
我尝试过 Performance API 的方法,但值不同。我不想将调试器附加到网页或添加自定义开发面板
const transferSize = performance.getEntriesByType('resource').map(item => item.transferSize).reduce((total, item) => total + item);
const encodedBodySize= performance.getEntriesByType('resource').map(item => item.encodedBodySize).reduce((total, item) => total + item);
const decodedBodySize= performance.getEntriesByType('resource').map(item => item.decodedBodySize).reduce((total, item) => total + item);
解决方案
你的逻辑在我看来是正确的。但是,在下面的代码中有一件事看起来很奇怪:
performance.getEntriesByType('resource').length;
上面给了我仅资源类型的请求调用的长度,但您实际上可能需要的是所有网络调用的传输大小,而不仅仅是资源类型。这一定是 transferSize 不匹配的原因。
我尝试了以下代码,在我看来:
var count = 0;
performance.getEntries().map(item => item.transferSize).forEach(size => {
if (typeof size == 'number') {
count = count + size;
}
});
此代码返回所有网络调用的 transferSize,请求调用的长度也匹配。我提供了一张typeof
支票,因为有一些undefined
传输大小
推荐阅读
- javascript - Vue 组件中的 props 是可变的吗?
- tesseract - 当前版本的 pytesseract 产生错误的字符串
- r - 如何在同一单元格中包含百分比和分子/分母
- database - 使用golang程序同时连接两个TDengine节点,查询数据混乱
- azure-sql-database - 是否应该在数据仓库中自动(每天)刷新所有数据源?(天蓝色)
- reactjs - 错误:useForm 必须在 a 内使用
- python - 优化 Lifetime 的 BG/NBD fitter 的执行
- dart - 将 EPOC 时间戳转换为 DateTime?在 json_serializable
- css - react-bootstrap css 覆盖自定义 css
- php - 将值附加到多选时,jquery重复项目