0

私のMVC4アプリケーションには、世界中のすべての都市のデータベースに接続するオートコンプリートがあります(そのため、かなり大きいと想像できます)。PCでは問題なく動作しますが、スマートフォンでサイトにアクセスすると、読み込みに3秒ほどかかり、パフォーマンスが非常に遅くなります。AjaxまたはJSONを使用すると高速になりますか?コードは次のとおりです(私はpluralsightチュートリアルのコードを使用しています):

ビューの一部+Javascript

<!--Searching through all the hotel locations -->
<p>Hotel Location (City): @Html.TextBoxFor(x => x.booking_instance.Location, 
   new { data_autocomplete = @Url.Action("QuickSearch", "Booking") })</p>

<script type="text/javascript">
$(document).ready(function () {        
    $(":input[data-autocomplete]").each(function () {
        $(this).autocomplete({ source: $(this).attr("data-autocomplete") }); 
    });
  }); 
</script>

コントローラ

// this is my database of cities.
TE_TSQL1_HBOSDataContext _db = new TE_TSQL1_HBOSDataContext(); 
public ActionResult QuickSearch(string term)
{
 var cities = _db.Cities
      .Where (r => r.CityName.Contains(term))
      .Select(r => new { label = (r.CityName + ", " + r.CountryName) });
 return Json(cities, JsonRequestBehavior.AllowGet); 
}
4

1 に答える 1

1

はい!JqueryとAjaxを使用すると、データセット全体を電話のメモリに読み込んで検索する必要がないため、携帯電話での処理が確実に高速になります。C#サーバーに選択を実行させてから、必要なデータだけを返すことができます。最良の部分は、サーバーがすでにJSONの結果を返していることです。また、2文字を入力した後、モバイルデバイスに最初のクエリを実行させることができるため、返されるデータセットのサイズが大幅に制限されます。

        $( ":input[data-autocomplete]" ).autocomplete({
            source: "controllerPath/QuickSearch",
            minLength: 2

        });
于 2012-06-04T06:44:03.147 に答える