Ci sono altri fattori che non stai prendendo in considerazione: nella maggior parte dei casi, AJAX aumenterà il carico del server. In uno scenario tipico, non ajax, un utente carica una pagina grande ogni pochi secondi o pochi minuti. Sì, quella singola pagina è un po 'più impegnativa per il server, ma ha un sacco di tempo tra le richieste di recupero e di servire altre richieste. In uno scenario AJAXified, il caricamento di una singola pagina è ora decine di piccoli hit, martellando costantemente il server e aspettando risposte.
È un po 'come la morte di 1000 tagli - nessuna delle richieste è così grande di per sé, ma il peso totale è un assassino. Soprattutto quando inizi a considerare che queste piccole richieste sono altrettanto costose da servire come richieste a pagina intera. In entrambi i casi, probabilmente stai eseguendo un'intera pipeline di applicazioni Web, colpendo un database e aspettando una risposta mentre sei seduto su una preziosa connessione HTTP.
Ecco un esempio di come Ajax può diventare brutto sul server molto velocemente. Prendiamo una tipica "dashboard direzionale" che presenta 4 slot per i widget. Supponiamo che al CEO piaccia un rapporto sulle vendite completo nella parte destra, una lista dei primi 10 dei guadagni nel mezzo e un rapporto sui prezzi delle azioni della società sulla destra. E diciamo che lo faremo tramite semplici richieste remote Ajax. Senza tenere conto dei fogli di stile, delle immagini e di altre risorse, la tua pagina ora richiede 4 round trip HTTP (pagina principale, ciascuno dei rapporti del dashboard) sul server. Ognuno di questi richiede uno stack web completo per essere eseguito - stai per colpire database e renderizzare HTML usando il tuo framework web, giusto? Ora moltiplica il singolo CEO per 2000 utenti remoti, alcuni dei quali hanno connessioni imprevedibili.
Al contrario, è possibile disporre di un'unica pagina lato server che esegua e restituisca uno scheletro HTML nonché i dati (inclusi in JSON in-page) per eseguire il rendering dei report. Connessione singola, più grande, ma meno battuta sul server web in totale perché non stai gestendo 4 richieste e fai girare 4 pipeline, ecc.