如何在Windows Phone中使用Javascript确定网络速度

本文关键字:Javascript 网络 速度 Windows Phone | 更新日期: 2023-09-27 17:55:25

根据我所读到的内容,要确定网络速度,我需要从网络上下载已知文件大小的图像,然后确定此过程获取用于Mbps计算的变量所花费的时间。我的第一个问题是,如何使用javascript将图像下载到Windows Phone?现在我一直在研究 javascript 函数,我对 javascript 函数有些熟悉,但我不确定如何告诉函数在哪里保存图像。另外,我的猜测是,我将使用HTML5中新增的导航API来确定下载过程所需的时间。为此,我应该使用window.performance.timing中的哪些指标来获得此计算。目前,我为每个指标制作了一个可以返回的函数,但我不确定在此计算中使用哪个函数。

如何在Windows Phone中使用Javascript确定网络速度

你不需要使用 JavaScript 来测试性能,我也不推荐它。也可以使用 C#,如下所示。

如果使用可移植类库进行HttpClient,则可以下载如下文件:

HttpClient httpClient = new HttpClient();
HttpResponseMessage response = null;
try
{       
    // generate a stream on your sever matching the download size requested    
    response = await httpClient.GetAsync(
        "http://www.example.com/speedtest/?size=Large");
    response.EnsureSuccessStatusCode(); // Throws exception if bad HTTP status code
    // no reason to measure time to save to file system or store the bytes
    // unnecessarily
    await response.Content.CopyAsAsync(Stream.Null);
}
catch (HttpRequestException hre)
{
    // something went wrong
}

您的计时代码包装上述内容以计算下载时间。

请记住,无论编程语言如何,执行此类操作都可能会消耗大量且不合理的用户数据计划。要进行准确的测试,您还需要多次运行非常大的下载。例如,我使用过的一个测试仪使用了100MB的数据。

在上面的 C# 代码中,您将受益于它使用 Null Stream 这一事实,这意味着所有下载的内容都将被忽略(而不是临时复制到不会使用的 byte 数组等结构中)。

但是,鉴于移动/蜂窝网络的普遍不稳定,您会注意到测试之间的巨大差异。

如果您计划使用应用程序下载大量内容,我强烈建议您考虑使用更多自适应样式技术。与其根据"时间点"选择网络性能数字,不如使用实际应用程序数据来衡量数据下载的性能,并据此进行更改。

在注释中,您提到使用 IE10 中提供的较新的 performanceTiming 对象。虽然您可以构造一个符合标准的网页,在其上放置资源,然后使用该对象的各种事件和属性,但我认为它增加了 Windows Phone 应用程序不必要的开销和复杂性(以及用 C# 标记的问题),尤其是在您希望执行特定的独立测试时。由于您无法控制浏览器下载内容的性质,因此您需要非常仔细地构建它,以确保仅下载"网络速度"测量资源。

另请注意,您无法控制运行测试时可能发生的其他后台下载,无论您用于构建测试的编程语言/平台如何。