2009-02-28 8 views
6

He instalado la versión 4.9.2 de DotNetNuke y estoy viendo los estados de caché cebados utilizando Firebug y Yslow ...¿Por qué las imágenes y los archivos javascript incluidos en DNN ya no se almacenan en caché en el cliente después de reemplazarlos?

Todas las imágenes y JavaScript se almacenan en caché en el cliente, a menos que los sustituyen ... Así que si yo cargue una nueva imagen de LOGO, ya no está en la memoria caché. Los existentes están en caché. Si reemplazo un archivo .js existente (ejecuté uno a través del minificador), ya no está en la memoria caché. Si reemplazo el archivo nuevo con el archivo original, se vuelven a almacenar en caché.

No he podido encontrar ninguna documentación sobre esto ... alguna idea? ¡Gracias!

Respuesta

1

me encontré con esta referencia:

Resolver el Problema de almacenamiento en caché

Aquí es donde me gustaría compartir los depuración y habilidades para resolver problemas brillantes que se utiliza para fijar el problema. Solo que no puedo, porque nunca pude descifrar qué estaba mal. Para mí, parece que usar la sobrecarga simple [setCache (key, object)] simplemente no funciona correctamente.

Lo que hice al final fue utilizar el mismo código que utilicé para el caché del diccionario de Url. Esta era una sobrecarga diferente porque usaba una devolución de llamada y un tiempo de caducidad fijo.

Aquí está el código:

DateTime absoluteExpiration = DateTime.Now.Add(settings.CacheTime); 
DataCache.SetCache(UrlDictKey, urlDict, null, absoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.AboveNormal, onRemove, settings.CachePersistRestart); 

Este código utiliza una sobrecarga diferente, y por alguna razón, funciona correctamente. Las pruebas lo confirmaron: anteriormente, cuando golpeaba el servidor de prueba con solicitudes, eventualmente se paralizaba a medida que la base de datos se cargaba en las consultas a la misma tabla una y otra vez. Ahora, habría una llamada a la sp, el elemento se almacenaría en caché, y las solicitudes podrían pasar sin ahogarse.

Encontrado esta referencia en: http://www.ifinity.com.au/Blog/Technical_Blog/EntryId/55/DotNetNuke-Caching-and-a-performance-problem/

Espero haber sido capaz de ayudar, al menos, o señalarle en la dirección correcta.

0

No sé sobre DotNetNuke pero de alguna manera necesita romper/matar la memoria caché al servir una URL diferente para el mismo nombre de archivo. Vea cómo lo hacen los grandes:

Desbordamiento de la pila: /js/question.min.js? v = 2527

Slashdot: images.slashdot.org/idlecore-tidied.css? T_2_5_0_244a

Digg:/css//global.css

bbc.co.uk:/home/liberación 29-7 /style/homepage.min.css

0

¿Ha mirado la configuración de caché en la configuración del host, creo?

1

Para su información, esto puede ser un poco fuera de tema, pero DotNetNuke hace una gran cantidad de su módulo de almacenamiento en caché en archivos planos en el directorio/portals/(que es la configuración de almacenamiento en caché predeterminado). En el menú del host, puede borrar este caché o cambiar la configuración de caché.

DotNetNuke 5.x ha sido completamente rediseñado, por lo que es posible que desee comprobarlo si está buscando un alto rendimiento. El rendimiento del sitio DotNetNuke.com mejoró dramáticamente cuando migraron de 4.9.x a 5.0.

1

No hubiera pensado que DNN estaría sirviendo activos/archivos estáticos (por ejemplo, imágenes). Creo que simplemente les serviría directamente IIS. A menos que la url es algo como esto:

blah.com/GetImage.aspx?filename=logo.jpg 

Si las URL no tienen 'aspx' en algún lugar, a continuación, IIS es más el problema.

1

El almacenamiento en caché del cliente depende de un conjunto particular de encabezados HTTP que el servidor web enviará a su navegador, que su navegador utiliza en solicitudes posteriores para los mismos objetos (es decir, la imagen del logotipo).

Cuando reemplaza el archivo, el servidor web cambiará la respuesta que está generando (encabezados HTTP Last-Modified/ETag), lo que invalidará la copia en caché de su navegador.

1

Asegúrese de que su instancia de IIS esté configurada para Habilitar caducidad del contenido. Descubrí que en varios de mis sitios de alojamiento esto no estaba configurado y que el almacenamiento en caché no estaba hecho como debería. Les pedí que lo habilitaran y ahora mis imágenes y archivos "estáticos" están guardando en caché correctamente.

Buena suerte J

Cuestiones relacionadas