2009-04-27 8 views
13

Escenario: Tengo una aplicación ASP.NET MVC desarrollada en Visual Studio 2008. Hay una carpeta raíz llamada "Contenido" que almacena imágenes y hojas de estilo. Cuando ejecuto localmente (utilizando Cassini) y navego por mi aplicación, cadarecurso del directorio "Contenido" es siempre descargado. Usando Firebug, puedo verificar que el servidor web devuelva un HTTP 200 ("ok").ASP.NET MVC en Cassini: ¿Cómo puedo forzar al directorio de "contenido" a devolver 304 en lugar de 200?

Deseo: Me gustaría que Cassini devuelva HTTP 304 ("no modificado") en lugar de 200. Este es el comportamiento cuando se ejecuta el sitio en IIS7.

Razonamiento: El sitio en el que estoy trabajando tiene una gran cantidad de recursos estáticos (a menudo hasta 40 por página). Navegar por el sitio es muy rápido en IIS7, porque el navegador almacena (correctamente) estos recursos. Sin embargo, navegar por el sitio en mi máquina local es extremadamente lento.

Las páginas que se procesan en menos de 1 segundo en IIS7 tardan más de 30 segundos en renderizarse en Cassini. En realidad es más rápido para que cargue todo el sitio web cada pocos minutos y lo pruebo desde allí. (Sí, reconozco que esto es perverso y loco.)

Así: ¿cómo puedo instruir/engañar a Cassini para tratar el directorio "Contenido" como IIS7 hace?

Respuesta

27

¿Está seguro de que el problema es el almacenamiento en caché? Porque el contenido se almacena en la memoria caché correctamente en mi máquina cuando ejecuto la aplicación en Cassini.

Creo que el problema que está teniendo podría ser el bajo rendimiento de Firefox al resolver direcciones IPv6, lo que provoca un retraso muy molesto en las cargas con direcciones como http://localhost:55555.

Lo que hice para cambiar este comportamiento fue cambiar la preferencia network.dns.disableIPv6 en about:config a true en Firefox. Sugiero probar eso.

+1

Holy crap you are a genius! Hice ese cambio y ahora los resultados son 304, como se esperaba. El problema * es * el almacenamiento en caché, sin embargo ... cuando network.dns.disableIPv6 se establece en falso, Firefox no envía los encabezados de solicitud HTTP "if-match" a localhost. ¡Wierd! – Portman

+0

:) Me alegro de que haya sido el truco. Eso es realmente un problema realmente molesto. –

+0

Ídem en el genio. Gracias por esta respuesta. – womp

2

Otra opción para usted es simplemente omitir Cassini y debug under IIS. Es bastante sencillo, y no te llevará diez minutos ponerlo en marcha. Examine 20 de sus páginas en Cassini, y ha utilizado ese tiempo de todos modos;)

Una cosa que he notado no siempre está en las guías, es que si desea depurar en una dirección diferente a http://localhost/ necesidad de configurar manualmente el host a su IIS local. Esto se hace mediante la adición de una línea en el archivo hosts, situada en

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

abrir el archivo con el bloc de notas (que necesita para "Ejecutar como Administrador" con el fin para poder guardar si está usando Windows Vista y tener activado el Control de cuentas de usuario ...) y agregar su host. Por ejemplo, para depurar bajo http://mysite/ que añadir

mysite   127.0.0.1 
+0

Voy a intentar esto ahora mismo. Mucho mejor para simular la producción mientras se depura, ¿verdad? – Portman

+0

¡Claro que sí! =) –

+0

Hmm ... si estoy entendiendo esto correctamente, requiere que "Publique" todos sus cambios. Eso parece ser un show-stopper. Si cambio algo en mi vista o hoja de estilo, quiero poder guardar y actualizar, sin agregar un paso adicional allí. ¿Te importaría explicar cómo tienes esta configuración en tu caja de desarrollo? – Portman

15

He tenido un problema similar en Chrome. Para resolver este comentario, elimine la línea localhost IPv4 en su archivo hosts. Aparentemente estos son comentados por defecto en Windows 7.

127.0.0.1  localhost 
#::1    localhost 
+0

¡Gracias, está funcionando! – UserControl

Cuestiones relacionadas