2016-02-16 14 views
5

Quando si utilizzano i bundle con EnableOptimisations impostato su true, l'URL di output contiene un hash per impedire al browser di caricare il file dalla cache se è stato modificato.Cache busting con Scripts.Render ma senza URL bundle

@Scripts.Render("~/content/js/global") 

Uscite:

<script src="/content/js/global?v=PqstRRGF8qsUsJfHu6NBBBp6eDxYBz1JCbHY6CQJVks3"></script> 

Tuttavia, alcuni file nella nostra applicazione sono specifici per una pagina. Noi riferimento a questi direttamente:

@Scripts.Render("~/areas/areaname/content/js/page-name.js") 

L'URL di uscita in questo caso non ha l'hash ed è quindi memorizzata nella cache, causando problemi quando rilasciamo modifiche a questi file.

Preferiamo non modificare ogni riferimento singolarmente o modificare manualmente gli URL ogni volta che vengono modificati i file.

Come è possibile aggiungere globalmente un hash (o un numero di versione) a tutti gli URL di script e di stile che sono pacchetti non?

risposta

5

Alla fine ho trovato una soluzione completamente diversa, tuttavia, mi sono imbattuto in a question contenente un'idea che mi avrebbe aiutato e spero che questo aiuti gli altri.

È possibile impostare manualmente i formati di tag predefiniti e includere il numero di versione.

string versionNumber = "1.2.3.4"; // get from assembly or config setting 

Styles.DefaultTagFormat = string.Format("<link href='{{0}}?v={0}' rel='stylesheet'/>", versionNumber); 
Scripts.DefaultTagFormat = string.Format("<script src='{{0}}?v={0}'></script>", versionNumber); 

Unico problema che posso vedere con questo è se il tuo URL contiene già una querystring. Ciò aggiungerebbe un secondo ? anziché un &.

Problemi correlati