Ho un progetto ASP.NET MVC3 in cui la pagina principale di aspx esegue un caricamento dinamico per le sue parti utilizzando jQuery ajax. Quindi, sostanzialmente quando il sito si carica, colpisce/Home/Index e quindi all'interno della vista Index (aspx), ci sono diverse linee di jQuery che effettuano chiamate ajax (a/Home/PartOne e/Home/PartTwo per popolare parti della pagina.Come ridurre/eliminare il tempo di attesa/latenza nella richiesta AJAX
Così ogni volta che la pagina viene caricata, fondamentalmente sta facendo 3 richieste: per arrivare indice, per ottenere PartOne, e quindi PartTwo
la domanda:. Perché c'è un certo tipo di tempo "attesa" per il la terza richiesta di esecuzione? Ho pensato che questo era il limite di richiesta simultanea del browser, ma perché non è in esecuzione dopo la prima richiesta?
Quando ho sperimentato l'attributo "OutputCache" ute su "PartTwo", si comporta come previsto, che si stava eseguendo velocemente. Questo suggerisce che il problema non è in IIS, ma da qualche parte dopo e prima che colpisca il mio metodo di azione.
Ecco uno screenshot da Chrome profiler rete:
Ecco una schermata sul MvcMiniProfiler - guardare il 3 ° fila/valore, è in attesa di 500 ms prima di eseguire codice di azione del mio controller.
Il mio codice controller è simile al seguente. Anche se mi tagliò il codice vero e proprio, ma il codice per PartTwo è molto banale (non lunga calcolo, nessuna chiamata db, ecc):
public class HomeController : Controller {
public ActionResult Index() {
// do something here
return View();
}
public ActionResult PartOne() {
// do something here
return View();
}
public ActionResult PartTwo() {
// do something here
return View();
}
}
mio javascript:
$(document).ready(function() {
$.ajax({
url: "/Home/PartOne",
cache: false,
success: function (data, textStatus, request) {
$("#TestContainerOne").html(data);
}
});
$.ajax({
url: "/Home/PartTwo",
cache: false,
success: function (data, textStatus, request) {
$("#TestContainerTwo").html(data);
}
});
});
mio index.aspx:
<h2>Home page</h2>
<div id="TestContainerOne"></div>
<div id="TestContainerTwo"></div>
PartOne.ascx:
<h2>Part One</h2>
PartTwo.ascx:
<h2>Part Two</h2>
Aiuto?
Potrebbe avere qualcosa a che fare con il numero di richieste simultanee di un browser può avere con un dominio specifico. Vedere la risposta di questa domanda: http://stackoverflow.com/questions/561046/how-many-concurrent-ajax-xmlhttprequest-requests-are-allowed-in-popular-browse – Dismissile
Non credo. Perché ci sono solo 3 richieste, quindi in teoria dovrebbero essere eseguite back-to-back - quali sono. Ma il ritardo sta accadendo dal lato server. Guarda la mia nota sull'esperimento usando l'OutputCache - il che suggerisce che non è causato dalla limitazione del browser/client. –
Cose da provare: a) Rilascio build con debug = "false" nel web.config (credo di aver letto da qualche parte che quando il debug è vero ci sono alcune cose che sono memorizzate nella cache), b) Prova il codice su IIS o IIS Express, poiché di solito trovo che il classico server di sviluppo sia un po 'instabile alcune volte. – Pedro