Ciao,
Sto progettando una nuova applicazione che girerà sia su dispositivi mobile che su web.
Hai già scelto che tecnologia utilizzare, se Asp.Net WebForms o MVC?
Salvando la compilazione e quindi le List su cache associando ad ogni nome di file la sessionid è una soluzione valida o sto percorrendo una strada completamente sbagliata?
Penso che tu intenda l'OutputCache, ma non devi decidere tu il nome del file (?) Con Asp.Net puoi inserire in cache un'intera pagina, una parte di essa o solo un oggetto, ma senza doverti preoccupare poi di dove effettivamente (se in memoria o sul disco) vengano persistite queste risorse.
Potresti per esempio crearti uno UserControl (se usi WebForms) o una ChildAction (se usi MVC3) che stampi in html la tua List<T>. Con la direttiva @OutputCache puoi istruire Asp.Net affinché inserisca in cache questa porzione di pagina. Puoi far variare la cache in base all'utente, in modo che l'uno non veda la lista dell'altro.
A tal proposito, leggi questo articolo di Cristian Civera.
http://www.aspitalia.com/script/606/Utilizzare-VaryByCustom-OutputCache-ASP.NET.aspxIn alternativa, potresti inserire in cache la List<T> anziché lo user control (
leggi qui come usare l'oggetto Cache) ma così facendo dovresti comunque fare il databinding ad ogni richiesta, e l'output dovrebbe essere rigenerato sempre identico ogni volta.
Inoltre volevo implementare le richieste tramite servizi wcf richiamati da jquery per evitare il ricaricamento della pagina.
Se vuoi mantenere i tempi di caricamento al minimo, allora concentra i tuoi sforzi sull'OutputCache, è il modo migliore per aumentare la reattività del sito. Non abusarne, ovviamente. E' anche importante che gli utenti vedano nel sito dati aggiornati.
Fortunatamente la cache di pagina può scadere automaticamente se si verificano aggiornamenti nel db, o se un file o un'altra chiave di cache cambiano o vengono rimossi. Questo ti mette in condizione di far durare la Cache abbastanza a lungo, ma solo finché non vengono apportati aggiornamenti ai dati ed è quindi necessaria una rielaborazione.
Usa strumenti tipo
YSlow o
PageSpeed per avere consigli pratici su come migliorare i tempi di accesso al sito.
Io non farei troppe chiamate ajax perché è bene che ogni pagina del sito deve abbia un proprio url affinché venga indicizzata correttamente dai motori di ricerca. Userei jQuery e Ajax solo in punti strategici, ad esempio per controllare la validità di uno username o per aggiungere un prodotto alla lista dei desideri, o per inviare un commento. Insomma, per attività che se comportassero un ricaricamento di pagina distrarrebbero solo l'utente.
Inoltre, anziché un servizio WCF valuta i PageMethods. Sono metodi statici di una pagina aspx che puoi consumare da ajax. E' più pratico così, secondo me, piuttosto che stare a configurare un servizio WCF.
http://www.aspitalia.com/articoli/asp.net/jquery-ajax-p-2.aspx#title_2
Mi sembra di aver capito che i servizi sono in grado di accedere alla cache o sbaglio?
Certo, ci arrivi da System.Web.HttpRuntime.Cache.
ciao,
Modificato da BrightSoul il 28 luglio 2011 23.19 -