2009-02-28 6 views
6

installation de la version 4.9.2 DotNetNuke et je regarde les états de cache amorcés à l'aide de Firebug et YSlow ...Pourquoi les images et les fichiers javascript inclus dans DNN ne sont plus mis en cache sur le client après leur remplacement?

Toutes les images et javascript sont mises en cache sur le client, à moins que je les remplace ... Donc, si je télécharger une nouvelle image LOGO, il n'est plus mis en cache. Les existants sont mis en cache. Si je remplace un fichier .js existant (j'ai exécuté un par le minifier), il n'est plus mis en cache. Si je remplace le nouveau fichier par le fichier d'origine, ils sont à nouveau mis en cache.

Je n'ai trouvé aucune documentation à ce sujet ... des idées? Merci!

Répondre

1

Je trouve cette référence:

Résoudre le problème Mise en cache

est ici où j'aimerais partager le débogage et brillant résolution de problèmes que j'ai utilisé pour résoudre le problème. Seulement je ne peux pas, parce que je ne pourrais jamais trouver ce qui n'allait pas. Pour moi, il semblerait que l'utilisation de la simple surcharge [setCache (key, object)] ne fonctionne pas correctement.

Ce que j'ai fait à la fin était d'utiliser le même code que j'ai utilisé pour le cache Url Dictionary. Cette surcharge était différente car elle utilisait un rappel et une durée d'expiration fixe.

Voici le code:

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

Ce code utilise une surcharge différente, et pour une raison quelconque, fonctionne correctement. Les tests l'ont confirmé: auparavant, lorsque le serveur de test était confronté à des requêtes, il finissait par s'interrompre lorsque la base de données chargeait les requêtes vers la même table encore et encore. Maintenant, il y aurait un appel au sp, l'élément serait mis en cache, et les demandes pourraient passer sans étouffer.

cette référence à trouvé: http://www.ifinity.com.au/Blog/Technical_Blog/EntryId/55/DotNetNuke-Caching-and-a-performance-problem/

espoir que j'ai pu aider ou au moins vous orienter dans la bonne direction.

0

Je ne connais pas DotNetNuke, mais vous devez d'une manière ou d'une autre casser/tuer le cache en servant une URL différente pour le même nom de fichier. Voyez comment les grands gars le font:

Stack Overflow: /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/libération 29-7 /style/homepage.min.css

0

Avez-vous regardé les paramètres de cache sous les paramètres de l'hôte, je pense?

1

FYI, cela peut être un peu hors sujet, mais DotNetNuke fait une grande partie de sa mise en cache dans des fichiers plats dans le répertoire/portals/(c'est le paramètre de mise en cache par défaut). Sous le menu hôte, vous pouvez effacer ce cache et/ou modifier les paramètres de cache.

DotNetNuke 5.x a été entièrement ré-architecturé, donc vous pouvez vouloir le vérifier si vous recherchez de hautes performances. Les performances du site DotNetNuke.com se sont considérablement améliorées lors de leur migration de 4.9.x à 5.0.

1

Je n'aurais pas pensé que DNN servirait des actifs/fichiers statiques (par exemple des images). Je pense qu'ils seraient simplement servis directement par IIS. À moins que l'URL est quelque chose comme ceci:

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

Si vos URL n'ont pas « ASPX » en eux quelque part, IIS est plus la question.

1

La mise en cache sur le client dépend d'un ensemble particulier d'en-têtes HTTP que le serveur Web enverra à votre navigateur, que votre navigateur utilise pour les demandes suivantes pour les mêmes objets (l'image du logo).

Lorsque vous remplacez le fichier, le serveur Web modifie la réponse qu'il génère (en-têtes HTTP Last-Modified/ETag), ce qui invalidera la copie en cache de votre navigateur.

1

Assurez-vous que votre instance IIS est définie sur Activer l'expiration du contenu. J'ai trouvé que sur plusieurs de mes sites d'hébergement cela n'était pas défini et la mise en cache n'était pas faite comme il se doit. Je les ai fait activer et maintenant mes images et fichiers "statiques" sont mis en cache correctement.

Bonne chance J