MVC Web アプリで検索結果が返される速度を上げようとしています。ユーザーが 1 つのフレーズを検索し、その後すぐに別のフレーズを検索する場合、元の検索をキャンセルするか、現実的には時間がかかるため、結果のレンダリングをキャンセルします。
編集:検索ボックスはリアルタイムで検索するため、「the」のように多くの結果を含むものを入力し、すぐにそれをより具体的なものに変更すると、元の検索が最新のものを保持します。
私は当初、ボトルネックはデータベースの相互作用であると考えていました(したがって、ここでデータベース検索リクエストをキャンセルすることについての私の質問です)が、オーバーヘッドである部分的なビューですべての結果をレンダリングすることです:
私のSearchContoller
フォームは次のとおりです。
public ActionResult Search(string query, string time) {
// Go off and do search, returning results
return PartialView("SearchResults", results);
}
最初のレンダリングSearch
中にコントローラ メソッドが再度使用された場合、どうにかして元のメソッドをキャンセルできますか? PartialView
たとえば、ビューでフラグを確認して、そのフラグが他の場所に設定されている場合はキャンセルできますか?
意見:
@model SearchResultModel
@if (Model.ResultType1.Count > 0) {
<h2>Results 1</h2>
<dl>
<dt>Results:</dt>
@foreach (var result in Model.Results1) {
if (FlagInControllerToStopThis) break; // OR SOMETHING SIMILAR??
<dd> <!--Each result is returned here--></dd>
}
</dl>
}