jQuery自动完成 - 慢速服务器与本地

时间:2017-01-13 15:33:22

标签: jquery asp.net-mvc jquery-ui-autocomplete

根据标题,我只在部署后面临性能问题。它是一个ASP.NET MVC5站点,部署在Azure上。我们正在谈论ms与几秒钟:/

我可以准备视频或任何有助于解决此问题的内容。 没有js错误被遗忘:/

这是一张图片,显示它在本地完美运作Working

直播,它最终会在7/8秒之后显示..如果不是更长时间。 代码传入...



$(document).ready(function () {

            $("#SerialSearch").autocomplete({
                autoFocus: true,
                //delay: 0,
                minLength: 2, // minimum length to trigger suggestions
                select: function(e, ui) { // define select handler

                    //alert(ui.item.value);
                    //hitting enter key on selected item works, mouse clicking after 609 on V609xxx will submit 609 sadly
                    //With this I override the problem
                    $('#SerialSearch').val(ui.item.value);
                    //alert('here');
                    $(this).parents('form').submit();
                },

                source: function (request, response) {
                    @*var modelDataJSON = '@Html.Raw(Json.Encode(Model))';*@
                    var check = @Html.Raw(val);
                    //var modelDataJSON = JSON.stringify(check);
                    $.ajax({
                        url: "/Devices/DeviceSearch",
                        type: "POST",
                        dataType: "json",
                        data: { Prefix: request.term, model: check },
                        success: function (data) {
                            //alert('success');
                            response($.map(data, function (item) {
                                return { label: item.SerialNumber, value: item.SerialNumber };
                            }))

                        }
                    })
                }
                //messages: {
                //    noResults: "", results: ""
                //}
            });
        })




cshtml:



@{
    ViewBag.Title = "Devices";
    Layout = "~/Views/Shared/_Layout.cshtml";
    //var val = Json.Encode(Model);
    //Using viewdata to load in mem entire device list
    var val = Json.Encode(@ViewData["FullDeviceList"]);
}

@using (Html.BeginForm(FormMethod.Get))
{
  @Html.AntiForgeryToken()
  <div class="form-horizontal">
  <hr />
    <div class="form-group">
      <div class="col-md-12">
        @Html.EditorFor(model => model.SerialSearch, new { htmlAttributes = new { @class = "form-control" } })

      </div>
    </div>
  </div>
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

要做的第一件事是确定问题的根源。 我假设你有自动完成控件的服务器端源,并通过Ajax调用获取数据。在本地(开发站点?)上,Ajax调用的延迟将是最小的。在Azure上,因为主机是远程的,我预计延迟会增加。 (当然,不知道你的实现,这只是推测)