Si trova tanta documentazione sulla Cache ma sul questo specifico problema poco e niente.
Il problema è: quale sistema utilizzare per mettere in cache delle pagine multilingua?
Premessa: il sito multilingua (in .net 2.0) esiste già. Io devo implementare il caching.

Esiste un pulsante che se attivato abilita una variabile di sessione (Session["Language"])
opportunamente testata che da il corretto rendering delle pagine a seconda della lingua scelta.

La problematica è dovuta al fatto che abilitando l'OutPutCache per 60 secondi a tutti gli utenti
viene servita la stessa pagina fino allo scadere della cache: se un utente che arriva 10 secondi prima di me e seleziona la lingua inglese io vedrò le stesse pagine in inglese. Ma se nel frattempo io imposto la lingua italiana cliccando sull'apposito pulsante l'altro utente vedrà le pagine in cache in italiano.
Questo perché io per invalidare la cache vado a testare una variabile "centralizzata" che è la session["Language"].
Se cambia tale variabile la cache viene invalidata. Tutto ok se non fosse che la session può essere diversa per ogni utente mentre le pagine recuperate dalla cache e servite dal server sono uguali per tutti gli utenti. Dovrei fare in modo che venissero aggiunte in cache diverse versioni della stessa pagina, una per ogni lingua selezionata. Non posso usare VaryByParam perchè mi è impossibile testare la querystring o i valori inviati tramite post dato che il sito è già esistente e come ho detto utilizza la sessione e non altri parametri. E’ possibile testare una variabile di sessione in VaryByParam? Oppure avete qualche suggerimento per risolvere il problema?

Grazie Mille

3.168 messaggi dal 06 settembre 2002
Contributi | Blog
Ciao,

l'unica cosa che mi viene in mente è mettere la vaiabile di sessione in un campo hidden e poi fare il verybycontrol su quel campo.

<%@ outputcache varybycontrol="hidLanguage" %>

Non ho mai provato ma dovrebbe andare.

HTH
.

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
Io ho risolto con "VaryByCustom" e testando un cookie nell'override del metodo GetVaryByCustomString, nel global.

La soluzione è efficiente... funziona correttamente, ma adesso provo il tuo suggerimento perchè in caso di necessità di modifiche in futuro potrebbe essere meno problematica.


Grazie

Modificato da NetLand il 31 ottobre 2007 10.06 -
Sul tuo suggerimento però mi sorge un dubbio... anche il campo hidden e il suo valore vengono memorizzati in cache quindi per 60 secondi non avrei cambiamenti di versione, anche cliccando su pulsante di selezione della lingua  O no?
3.168 messaggi dal 06 settembre 2002
Contributi | Blog
Ciao,

No, con l'attributo varybycontrol lui memorizza una versione della pagina in base al valore del controllo che gli passi in input.
HTH
.

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.