Низкая скорость загрузки с вызовом Ajax - PullRequest
0 голосов
/ 04 октября 2018

У меня есть интересная проблема - у меня есть собственный сервер IIS 2016, который я использую для размещения веб-сайта, который позволяет пользователям загружать различные файлы - некоторые в текстовом формате, а другие - в виде архива вместе.Первоначально веб-сайт возвращал ошибку 500 с сервера при попытке загрузить что-то большее, например, ~ 50 МБ.Я гуглил, что IIS требует настройки maxAllowedContentLength (изменено по умолчанию на 209715200, ~ 300 МБ) и параметров FastCGI для IDLE, ACTIVITY и REQUEST (изменено на 600), чтобы разрешить загрузку файлов большего размера без ограничения размера файла.Однако теперь, когда файлы загружаются, скорость загрузки для этих больших файлов замедлилась до сканирования.Раньше я мог загружать ~ 20 МБ файлов за 10 секунд в локальной сети, в то время как сейчас 50 МБ занимает около 160 секунд.Не линейное увеличение, которое я ожидаю.

Мой сайт работает на Django, а передача файлов моего метода POST осуществляется с помощью вызова Ajax в JS:

$('#sn').on('submit', function(event) {
    event.preventDefault();

var post_data = new FormData($("#sn")[0]);

$.ajax({
    xhr: function() {
      var xhr = new window.XMLHttpRequest();

      xhr.upload.addEventListener("progress", function(evt) {
        var percent = Math.round(evt.loaded/evt.total * 100)
        console.log(percent)
        $('#query_button').attr('disabled', true)
        $('#query_button').get(0).innerText = "Upload status: " + percent + '%'
      }, false);

      xhr.upload.addEventListener("load", function(evt) {
        $('#query_button').get(0).innerText = "PLEASE WAIT..."
      }, false);

      return xhr;
    },
    url: '#',
    type: "POST",
    data: post_data,
    processData: false,
    contentType: false,
    dataType: "json",
    statusCode: {
      200: function() {
      // alert("Server received request and posted a response!");
      },
      404: function() {
        alert("Error code 404: Page not found!");
      },
      408: function() {
        alert("Error code 408: Request Timeout!");
      },
      500: function() {
        alert("Error code 500: Internal server error!");
      }
    },
    success: function(response) {
      console.log(response) 
    }
  });
})

Может кто-нибудь сказать, пожалуйста,если вызов Ajax может быть причиной этого замедления в скорости загрузки, или если это что-то еще, что нужно настроить в IIS?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...