È probabile che tutto quanto sopra sia vero. Il più grande singolo fattore che influenza le prestazioni nel sito ASP.NET su cui ho lavorato è che tutto ciò che riguardava era vecchio. La versione di .NET framework, i server, l'infrastruttura del database e il codice stesso stavano invecchiando male.
Sospetto che molti siti ASP.NET tendano ad essere siti aziendali. Questi non hanno molto amore, dal momento che tendono a solo a lavorare . Le persone non li riscrivono fino a quando non sono costretti a farlo, il che è spesso molto lungo in fondo alla strada.
So che il sito con cui ho lavorato ASP.NET ha ottenuto un enorme aumento solo passando alla versione più recente del framework, che aveva un jITing molto più efficiente e impostazioni predefinite di cache sensate.
L'altra cosa che ho visto che molti siti ASP.NET non sanno come scalare correttamente. Non hanno un corretto bilanciamento del carico impostato perché progettare il loro sito per funzionare correttamente con i web garden non è comune o ben documentato nella comunità. Se non si progetta il proprio sito per i giardini Web dall'inizio, non è possibile utilizzare il meccanismo di ridimensionamento incorporato di IIS. Il bilanciamento del carico del software con NLB di Windows non è molto comune ed è complesso da gestire. (Questo richiama il fatto che ASP.NET tende ad essere un software aziendale e tende a essere gestito dalla società che gestisce il sito piuttosto che dai professionisti IT che sanno come configurare correttamente questa roba.)
Il bilanciamento del carico hardware con F5s è molto costoso, ma sembra essere il meccanismo più comune e semplice per ridimensionare i siti ASP.NET all'interno delle reti aziendali. Penso che tra il pubblico open source ci si aspetta che si crei il bilanciamento del carico fin dall'inizio utilizzando strumenti open source disponibili gratuitamente che si ridimensionano automaticamente in base all'utilizzo. Questo non è comune nel mondo ASP.NET da quello che ho visto.