Mi sono preso un paio di giorni per sistemare il mio sito. A parte la sporcizia di codice che lo ha sempre contraddistinto (all'interno è codice in VB del 2002) e che ho in parte ripulito, ho implementato un url rewriting per migliorare l'indicizzazione da parte dei motori di ricerca.
Visto che è il mio quel sito, e visto che è sempre stata la mia palestra per l'asp.net, ho provato vari modi per la sua implementazione. Inizialmente avevo posto la mia attenzione all'uso degli handler come avevo spiegato qui nel lontano luglio del 2004, tecnica che trovo descritta anche attualmente in molti blog. Ma mi sono dovuto ricredere dopo i primi rilasci in beta per dei rallentamenti iniziali che non mi spiegavo. Dopo aver studiato per bene il funzionamento di tale tecnica con la mia web application, ho dovuto prendere la decisione di rinunciare, perché sì questa tenica risolve molti problemi, come il cambio di nome per i postback e necessità simili, ma creava un lavoro al server supplementare del tutto inutile.
L'uso di quel tipo di handler prende in consegna al richiesta e la ricompila con il nome della nuova pagina, e questo creava tanti file compilati nella cache di asp.net, quante erano le pagine elaborate con tale tecnica. Riprendendo l'esempio con quello script, io facevo in modo che un link di questo tipo:
www.nomesito.xxx/articolo.aspx?codice=001
Potesse venire invocato con questo url:
www.nomesito.xxx/articolo001.aspx
Il problema è dato dal fatto che ogni singolo articolo così specificato crea nella cache di asp.net una pagina compilata a sé, e per ogni articolo richiesto c'è un periodo di latenza dovuta alla nuova compilazione. Lo scenario diventa apocalittico se, nel mio caso e per il sito, gli articoli fossero stati un milione e fosse molto trafficato e tutti sarebbero richiesti. Nella cache di asp.net si sarebbero creati, per assurdo e solo teoricamente, 1.000.000 di file!
Ho deciso così di risolvere in un altro modo più semplice e prestazionale. In rete sono disponibili gratuitamente due componenti che fanno questo lavoro egregiamente lasciando perdere quello introdotto di asp.net 2.0 che è molto limitato. Io ho preso in considerazione:
Entrambi hanno funzioni complete, come l'uso del codice http 301 per i trasferimenti di pagina e così via. Alla fine la mia decisione è caduta sul primo, ma solo per casualità.
In ogni caso, attenzione all'handler e al PageParser.GetCompiledPageIstance e a come viene utilizzato. Nel mio caso era un danno.
Tra due giorni è Santa Lucia.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Un po' di benchmark tra Linq, Entity Framework e Nhibernate, il 12 ottobre 2008 alle 14:46
- Windows Forms - DataGridView e validazione, il 23 settembre 2007 alle 20:08
- ControlParameter e masterpage... bug?, il 23 dicembre 2006 alle 15:58
- Se Visual Studio 2005 non accetta più la tastiera, il 16 dicembre 2006 alle 20:45
- Service Pack 1 di Visual Studio 2005, il 16 dicembre 2006 alle 20:35