Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 网站速度测试。gzip有问题吗?_C#_Jquery_Gzip_Speed Test - Fatal编程技术网

C# 网站速度测试。gzip有问题吗?

C# 网站速度测试。gzip有问题吗?,c#,jquery,gzip,speed-test,C#,Jquery,Gzip,Speed Test,我将在我们的web应用程序中实现internet连接速度测试。没有要求它必须是非常高级的特性,所以我开始尽可能地简化它 其思想是从HttpHandler获取一些数据,看看需要多长时间,然后根据数据量和时间计算速度。我认为最好发送十个数据包,扔掉最高和最低时间,然后计算平均时间 我的HttpHandler: public class SpeedTest : IHttpHandler { public void ProcessRequest(HttpContext context)

我将在我们的web应用程序中实现internet连接速度测试。没有要求它必须是非常高级的特性,所以我开始尽可能地简化它

其思想是从HttpHandler获取一些数据,看看需要多长时间,然后根据数据量和时间计算速度。我认为最好发送十个数据包,扔掉最高和最低时间,然后计算平均时间

我的HttpHandler:

public class SpeedTest : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        var Response = context.Response;

        FileInfo file = new FileInfo(@"C:\dev\Project\****\trunk\Application\1mb.txt");

        if (file.Exists)
        {
            Response.Clear();
            Response.AddHeader("Content-Length", file.Length.ToString());
            Response.WriteFile(file.FullName);
            Response.End();
        }
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}
下面是我的jquery代码,它添加了按钮并显示了一个对话框,我将在其中显示结果等

$(document).ready(function () {
$('<a href="#">Speedtest</a>').prependTo('#HeaderInfoBarRight').button({
    text: false, icons: { primary: "ui-icon-clock" }
})
    .click(function () {
        var dialog = $('<div></div>').dialog({
            autoOpen: false
            , title: 'Speedtest'
            , modal: true
            , width: 'auto'
            , resizable: false
            , height: 'auto'
            , minHeight: 50
            , close: function () {
                $(this).dialog('destroy').remove();
            }
        });
        var html = '<div>To start the test click below.</div>' +
            '<a href="#">Start test</a>';
        dialog.html(html).dialog('open');
        dialog.find('a').button({ text: true })
        .click(function () {
            var startTest = new Date();
            $.post('SpeedTest.ashx', {}, function (result) {
                var endTest = new Date();
                //Calculate time
            });
        });
    });
$(文档).ready(函数(){
$('').prependTo('#HeaderInfoBarRight')。按钮({
text:false,图标:{primary:“ui图标时钟”}
})
。单击(函数(){
变量对话框=$('')。对话框({
自动打开:错误
,标题:“速度测试”
,模态:真的
,宽度:“自动”
,可调整大小:false
,高度:'自动'
,最小身高:50
,关闭:函数(){
$(this.dialog('destroy').remove();
}
});
var html='要开始测试,请单击下面的按钮。'+
'';
dialog.html(html.dialog('open');
dialog.find('a')。按钮({text:true})
。单击(函数(){
var startTest=新日期();
$.post('SpeedTest.ashx',{},函数(结果){
var endTest=新日期();
//计算时间
});
});
});
}))

文件1mb.txt是通过windows中的命令提示符创建的,如下所示:

fsutil文件createnew c:\temp\1mbfile.txt 1048576

这个文件正好是1mb。现在来谈谈问题。例如,当我在firebug中检查响应时,它的大小只有8.8KB。这怎么可能?是GZIP压缩吗?它如何将1mb文件压缩到8.8KB?是否因为使用fsutil创建文件时,数据重复

我寻找的一个解决方案是强制它不压缩(如果这是问题的话),这可能吗?我找不到方法将正确的头设置为不压缩

如果这是一个压缩问题,对此无需采取任何措施,我是否可以检查响应大小,并始终指望它在所有环境中都精确到该大小


欢迎提出任何其他想法。另外,如果有这样的想法,也可以考虑如何实施speedtest。

是的,这可能是一个gzip压缩问题
fsutil file createnew
创建一个由零组成的文件,因此它当然可以非常高效地压缩

可以使用web调试代理来验证web服务器是否正在使用压缩,如本文所述:
这肯定是压缩问题。作为一种我没有尝试过但我认为应该有效的解决方法,将生成文件的扩展名更改为Gzip可以避免的扩展名(例如:mp3),然后再次尝试测试,看看它是否再次被压缩


告诉我发生了什么,谢谢。

谢谢你的回答。但有一个问题。我不想关闭web服务器上的压缩,因为我需要它来提高性能。我只想为这个明确的请求关闭它。您知道这是否可行吗?如果您发送的HTTP头
接受编码:
没有值,则可能会强制服务器向您发送未压缩的响应。或者,浏览器的about:config页面中可能有一个设置将禁用此标题。