2009-02-28 6 views
6

Ich installierte DotNetNuke Version 4.9.2, und ich bin die grundierte Cache-Zustände mit Firebug und YSlow ...Warum werden in DNN enthaltene Bilder und Javascript-Dateien nicht mehr auf dem Client zwischengespeichert, nachdem ich sie ersetzt habe?

Alle Bilder sehen und Javascript auf dem Client zwischengespeichert, wenn ich sie nicht ersetzen ... Also, wenn ich Lade ein neues LOGO Bild hoch, es wird nicht mehr zwischengespeichert. Die vorhandenen werden zwischengespeichert. Wenn ich eine vorhandene JS-Datei ersetze (ich habe eine durch den Minifier ausgeführt), wird sie nicht mehr zwischengespeichert. Wenn ich die neue Datei durch die Originaldatei ersetze, werden sie erneut zwischengespeichert.

Ich konnte keine Dokumentation zu diesem Thema finden ... irgendwelche Ideen? Vielen Dank!

Antwort

1

fand ich diese Referenz:

Caching Problemlösung

Hier ist, wo ich die brillanten Debuggen und Fähigkeiten zur Problemlösung teilen ich das Problem zu beheben verwendet würde gerne. Nur ich kann nicht, weil ich nie herausfinden konnte, was falsch war. Für mich scheint es, dass die Verwendung der einfachen Überladung [setCache (key, object)] einfach nicht richtig funktioniert.

Was ich am Ende getan habe, war die Verwendung des gleichen Codes, den ich für den Url Dictionary Cache verwendet habe. Dies war eine andere Überladung, da ein Rückruf und eine feste Ablaufzeit verwendet wurden.

Hier ist der Code:

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

Dieser Code verwendet eine andere Überlastung, und aus irgendeinem Grund funktioniert. Tests bestätigten es: Früher, als der Testserver mit Anfragen gehämmert wurde, würde es sich schließlich ersticken, wenn die Datenbank immer wieder auf Anfragen an dieselbe Tabelle geladen wurde. Nun würde es einen Anruf bei der SP geben, der Gegenstand würde zwischengespeichert und die Anfragen könnten ohne Erstickung durchgehen.

Fand diese Referenz an: http://www.ifinity.com.au/Blog/Technical_Blog/EntryId/55/DotNetNuke-Caching-and-a-performance-problem/

Hoffnung konnte ich zumindest oder zeigen Sie in die richtige Richtung helfen.

0

Ich weiß nicht über DotNetNuke, aber Sie müssen irgendwie den Cache brechen/killen, indem Sie eine andere URL für den gleichen Dateinamen bereitstellen. Sehen Sie, wie die großen Jungs es tun:

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/Release-29-7 /style/homepage.min.css

0

Haben Sie sich die Cache-Einstellungen unter Host-Einstellungen angesehen?

1

FYI, das ist vielleicht ein wenig off topic, aber DotNetNuke macht eine Menge seiner Modul Caching in flache Dateien im/portals/Verzeichnis (das ist die Standardeinstellung für das Caching). Im Host-Menü können Sie diesen Cache löschen und die Cache-Einstellungen ändern.

DotNetNuke 5.x wurde komplett neu entwickelt. Sie sollten es also überprüfen, wenn Sie nach einer hohen Leistung suchen. Die Leistung der Website DotNetNuke.com hat sich drastisch verbessert, als sie von 4.9.x auf 5.0 migriert wurden.

1

Ich hätte nicht gedacht, dass DNN Assets/statische Dateien (zB Bilder) dienen würde. Ich denke, sie würden einfach direkt von IIS bedient werden. Es sei denn, die URL so etwas wie diese:

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

Wenn Ihre URLs nicht haben ‚aspx‘ in ihnen irgendwo, dann ist IIS mehr das Problem.

1

Die Zwischenspeicherung auf dem Client hängt von einer bestimmten Gruppe von HTTP-Headern ab, die der Webserver Ihrem Browser sendet, den Ihr Browser bei nachfolgenden Anforderungen für die gleichen Objekte (dh das Logo-Bild) verwendet.

Wenn Sie die Datei ersetzen, ändert der Webserver die von ihm generierte Antwort (HTTP-Last-Modified/ETag-Header). Dadurch wird die zwischengespeicherte Kopie Ihres Browsers ungültig.

1

Stellen Sie sicher, dass Ihre IIS-Instanz auf "Aktiviere Ablaufdatum" eingestellt ist. Ich habe festgestellt, dass dies auf mehreren meiner Hosting-Sites nicht festgelegt war und das Caching nicht so durchgeführt wurde, wie es sein sollte. Ich hatte sie aktivieren und jetzt sind meine Bilder und "statische" Dateien richtig zwischengespeichert.

Viel Glück J