2009-04-27 10 views
13

Scenario: Ho un'applicazione ASP.NET MVC sviluppata in Visual Studio 2008. Esiste una cartella radice denominata "Contenuto" che memorizza immagini e fogli di stile. Quando eseguo localmente (utilizzando Cassini) e sfoglia la mia applicazione, ognirisorsa dalla directory "Contenuto" è sempre scaricato. Usando Firebug, posso verificare che il server web restituisca un HTTP 200 ("ok").ASP.NET MVC su Cassini: come posso forzare la directory "content" a restituire 304 anziché 200?

Desiderato: Vorrei che Cassini restituisca l'HTTP 304 ("non modificato") anziché 200. Questo è il comportamento durante l'esecuzione del sito in IIS7.

Ragionamento: Il sito sto lavorando ha un gran numero di risorse statiche (spesso ben 40 per pagina). La navigazione nel sito è molto veloce su IIS7, poiché queste risorse sono (correttamente) memorizzate nella cache dal browser. Tuttavia, la navigazione del sito sul mio computer locale è dolorosamente lenta.

Le pagine che eseguono il rendering in meno di 1 secondo su IIS7 impiegano più di 30 secondi per il rendering su Cassini. In realtà è più veloce per me per caricare l'intero sito web ogni pochi minuti e testare da lì. (Sì, riconosco che questo è perverso e pazzo.)

Quindi: come posso istruire/ingannare Cassini nel trattare la directory "Contenuto" come IIS7 fa?

risposta

27

Sei sicuro che il problema sia il caching? Perché il contenuto viene memorizzato correttamente nella cache sulla mia macchina quando eseguo l'applicazione su Cassini.

Credo che il problema che stai avendo potrebbe essere sotto-performance di Firefox con la risoluzione degli indirizzi IPv6, che provoca un ritardo molto fastidioso sui carichi con indirizzi come http://localhost:55555.

Quello che ho fatto per modificare questo comportamento è stato quello di modificare la preferenza network.dns.disableIPv6 su about:config per true su Firefox. Suggerisco di provarlo.

+1

Santo schifo sei un genio! Ho apportato questo cambiamento e ora i risultati sono 304, come previsto. Il problema * è * il caching tuttavia ... quando network.dns.disableIPv6 è impostato su false, Firefox non invia le intestazioni delle richieste HTTP "if-match" a localhost. Wierd! – Portman

+0

:) Sono contento che abbia fatto il trucco. Questo è davvero un problema davvero fastidioso. –

+0

Idem sul genio. Grazie per questa risposta. – womp

2

Un'altra opzione per voi è semplicemente saltare Cassini e debug under IIS. È piuttosto semplice, e non ti serviranno dieci minuti per iniziare. Scorri 20 delle tue pagine su Cassini e hai comunque utilizzato quell'ora;)

Una cosa che ho notato non è sempre nelle guide, è che se vuoi eseguire il debug su un indirizzo diverso da http://localhost/ tu? è necessario impostare manualmente l'host sul tuo IIS locale. Questo viene fatto con l'aggiunta di una riga nel file hosts, situato a

C: \ Windows \ system32 \ drivers \ etc \ hosts

Aprire il file con il blocco note (è necessario "Esegui come amministratore", al fine di essere in grado di salvare se stai utilizzando Windows Vista e hai attivato il controllo dell'account utente ...) e aggiungi il tuo host. Ad esempio, per eseguire il debug sotto http://mysite/ si aggiunge

mysite   127.0.0.1 
+0

Ho intenzione di provare questo adesso. Molto meglio per simulare la produzione durante il debug, giusto? – Portman

+0

Certo che lo è! =) –

+0

Hmm ... se sto capendo correttamente, richiede di "Pubblicare" tutte le tue modifiche. Sembra uno spettacolo-tappo. Se cambio qualcosa nella mia vista o foglio di stile, voglio poter salvare e aggiornare, senza aggiungere un passaggio aggiuntivo. Ti dispiacerebbe approfondire come hai questa configurazione sulla tua scatola di sviluppo? – Portman

15

Ho avuto un problema simile in Chrome. Per risolvere questo commento, la riga localhost IPv4 nel file hosts. Apparentemente questi sono commentati per impostazione predefinita in Windows 7.

127.0.0.1  localhost 
#::1    localhost 
+0

Grazie, funziona! – UserControl

Problemi correlati