通过Ajax调用上传速度较慢

时间:2018-10-04 05:18:06

标签: javascript django iis

我有一个有趣的问题-我有自己的IIS 2016服务器,用于托管一个网站,该网站允许用户上传各种文件-有些为文本格式,其他则压缩在一起。最初,网站尝试上传更大的内容(例如〜50MB)时,将从服务器返回错误500。我用Google搜索到,IIS需要配置maxAllowedContentLength(默认更改为209715200,约300MB)以及FastCGI的IDLE,ACTIVITY和REQUEST的参数(更改为600),以便允许上传更大的文件而不会达到文件大小限制。但是,既然文件已被上传,这些较大文件的上传速度就减慢了爬网速度。以前,我可以在10秒内在本地网络上上传约20MB的文件,而现在50MB需要约160秒。我不会期望线性增加。

我的网站在Django上运行,而我的POST方法文件传输是通过JS中的Ajax调用进行的:

$('#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上需要进行其他调整?

0 个答案:

没有答案