Медленный ответ для возврата файла с помощью контроллера FileResult?

Я пытаюсь создать приложение для тестирования скорости для наших клиентов, подключающихся к нашим электронным лабораториям. Я хочу проверить их скорость загрузки в Мбит / с.

Логика, которую я придумал, такова; после события click запустите startTime, сделайте ajax-вызов к контроллеру FileResult, чтобы вернуть jpg-файл объемом 2,67 Мб обратно клиенту. После "успеха" запишите endTime, вычтите две метки времени, затем вызовите другой контроллер, чтобы завершить некоторую логику и записать результаты в базу данных, где я затем возвращаю представление, чтобы показать результаты.

Я размещаюсь на сервере Azure Db в регионе, где я живу. Мои результаты - 1 Мбит / с, что кажется медленным по сравнению с speedtest.net, где я получаю 15 Мбит / с, выбирая сервер в том же регионе.

Мне интересно, если этот подход не работает? Я до сих пор работаю над основами, так что попытки отлова и т. Д. Не реализованы.

Сценарий на моей странице:

<script>
        $(document).ready(function () {

        $("#downloadFile").click(function () {
            var start = Date.now();
            var end = null;
            var totalSeconds = 0.00;
            $.ajax({

                url: "/Home/DownloadTest",

                success: function (data) {

                    end = Date.now();
                    //alert(start + " " + end);
                    totalSeconds = (end - start) / 1000;
                    window.location.href = "/Home/DownloadResults?totalSeconds="+totalSeconds;
                }
            });

        });

    });

</script>

Контроллер FileResult

//Download File
    public FileResult DownloadTest()
    {
        string directoryPath = Server.MapPath("~/TestFile/2point67mb.jpg");
        string fileName = "DownloadTest.jpg";

        return File(directoryPath, "image/jpeg", fileName);
    }

Контроллер представления

 //Download Results
    public ActionResult DownloadResults(string totalSeconds)
    {
        double totalSecs = Convert.ToDouble(totalSeconds);

        SpeedTest Test = new SpeedTest();

        Services.IPAddress ip = new Services.IPAddress();
        var clientIP = ip.GetIPAddress();
        string[] IPAddresses = clientIP.Split(':');
        Test.Address = IPAddresses[0];

        double fileSize = 2.67; //Size of File in MB.
        double speed = 0.00;

        speed = Math.Round(fileSize / totalSecs);
        Test.ResponseTime = string.Format("{0} Mbps", speed);
        Test.Status = "Success";
        Test.UserId = User.Identity.GetUserId();
        Test.TestDate = DateTime.Now;
        db.SpeedTest.Add(Test);
        db.SaveChanges();

        return View(Test);
    }

0 ответов

Другие вопросы по тегам