3

Web アプリケーションにインターネット接続速度テストを実装しようとしています。非常に高度な機能である必要はないので、できる限りシンプルにすることから始めました。

アイデアは、HttpHandler からいくつかのデータをフェッチし、どれくらいの時間がかかるかを確認し、データの量と時間から速度を計算することです。たぶん10個のデータのパッケージを送信して、最高時間と最低時間を捨ててから平均時間を計算する方が良いと思いました。

私の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
            });
        });
    });

});

ファイル 1mb.txt は、Windows のコマンド プロンプトで次のように作成されました。

fsutil ファイル createnew c:\temp\1mbfile.txt 1048576

ファイルはちょうど1MBです。今問題に。たとえばfirebugで応答を調べると、サイズはわずか8.8 kbです。これはどのように可能ですか?GZIP圧縮ですか?1MB のファイルを 8.8KB に圧縮するにはどうすればよいですか? fsutil でファイルを作成すると、データが繰り返しになるからですか?

私が探している解決策は、強制的に圧縮しないようにする方法です (これが問題である場合)、それは可能ですか? 正しいヘッダーを圧縮しないように設定する方法が見つかりません。

それが圧縮の問題であり、それについて何もすることがない場合、応答サイズを確認し、常にすべての環境で正確にそのサイズであると期待できますか?

他のアイデアは大歓迎です。そのようなアイデアがあれば、一般的にスピードテストを実装する方法についてのアイデアも。

4

2 に答える 2

1

はい、gzip 圧縮の問題である可能性があります。 fsutil file createnewゼロで構成されるファイルを作成するため、もちろん非常に効率的に圧縮されます。

この記事で説明されているように、Fiddler Web デバッグ プロキシを使用して、Web サーバーが圧縮を使用しているかどうかを確認することができます: IIS 6 および IIS 7 での HTTP 圧縮

于 2011-05-14T09:40:13.593 に答える
0

間違いなく圧縮の問題です。私は試していませんが、うまくいくはずだと思う回避策として、生成されたファイルの拡張子をGzipが回避するもの(例:mp3)に変更し、テストを再試行して、再度圧縮されるかどうかを確認してください。

何が起こったのか教えてください、ありがとう。

于 2011-06-29T09:39:49.727 に答える