2009-02-28 6 views
6

Ho installato DotNetNuke versione 4.9.2 e sto a guardare gli stati di cache innescati con Firebug e YSlow ...Perché le immagini e i file javascript inclusi in DNN non vengono più memorizzati nella cache del client dopo la loro sostituzione?

Tutte le immagini e JavaScript vengono memorizzate nella cache sul client, a meno che io li sostituisco ... quindi se io carica una nuova immagine LOGO, non è più memorizzata nella cache. Quelli esistenti sono memorizzati nella cache. Se sostituisco un file .js esistente (ne ho eseguito uno attraverso il minificatore), non viene più memorizzato nella cache. Se sostituisco il nuovo file con il file originale, vengono nuovamente memorizzati nella cache.

Non riesco a trovare alcuna documentazione su questo ... qualche idea? Grazie!

risposta

1

ho trovato questo riferimento:

Risolvere il problema di caching

Qui è dove mi piacerebbe condividere i debug e di problem solving brillanti che ho usato per risolvere il problema. Solo io non posso, perché non potrei mai capire cosa c'è che non va. Per me, sembrerebbe che l'uso del semplice overload [setCache (key, object)] non funzioni correttamente.

Quello che ho fatto alla fine è stato utilizzare lo stesso codice che ho usato per la cache del dizionario dell'URL. Si trattava di un sovraccarico diverso perché utilizzava un callback e un tempo di scadenza prefissato.

Ecco il codice:

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

Questo codice utilizza un sovraccarico di diverso, e per qualche ragione, funziona correttamente. Il test lo ha confermato: in precedenza, quando martellava il server di prova con richieste, alla fine si sarebbe soffocato come il database caricato su query sulla stessa tabella più e più volte. Ora, ci sarebbe stata una chiamata alla sp, l'elemento sarebbe stato memorizzato nella cache, e le richieste potevano passare senza soffocare.

Abbiamo trovato questo riferimento: http://www.ifinity.com.au/Blog/Technical_Blog/EntryId/55/DotNetNuke-Caching-and-a-performance-problem/

Spero di essere stato in grado di aiutare almeno o punto nella giusta direzione.

0

Non conosco DotNetNuke ma in qualche modo è necessario rompere/uccidere la cache servendo un URL diverso per lo stesso nome file. Guarda come lo fanno i grandi:

Overflow dello stack: /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

Hai guardato le impostazioni della cache sotto le impostazioni host, credo?

1

FYI, questo può essere leggermente fuori tema ma DotNetNuke fa molto il suo modulo di memorizzazione nella cache in file flat nella directory/portali/(che è l'impostazione predefinita della cache). Sotto il menu host, puoi cancellare questa cache e cambiare le impostazioni della cache.

DotNetNuke 5.x è stato completamente riprogettato in modo da poter controllare se si sta cercando prestazioni elevate. Le prestazioni del sito DotNetNuke.com sono migliorate notevolmente quando sono migrate dalla 4.9.x alla 5.0.

1

Non avrei mai pensato che DNN avrebbe offerto risorse/file statici (ad esempio immagini). Penso che sarebbero semplicemente serviti direttamente da IIS. A meno che l'url è qualcosa di simile:

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

Se gli URL non hanno 'aspx' in loro da qualche parte, quindi IIS è più il problema.

1

La memorizzazione nella cache sul client dipende da un particolare set di intestazioni HTTP che il server Web invierà al browser, che il browser utilizza nelle richieste successive per gli stessi oggetti (ad esempio, l'immagine del logo).

Quando si sostituisce il file, il server Web cambierà la risposta che sta generando (intestazioni HTTP Ultima modifica/ETag) - che invalideranno la copia cache dei browser.

1

Assicurarsi che l'istanza di IIS sia impostata su Abilita scadenza contenuto. Ho scoperto che in molti dei miei siti di hosting questo non era impostato e la memorizzazione nella cache non è stata eseguita come dovrebbe essere. Li ho fatti abilitare e ora le mie immagini e i file "statici" stanno memorizzando nella cache correttamente.

Good Luck J

Problemi correlati