2013-05-09 6 views
5

In MVC-4, fasci per la compressione CSS & file JS possono essere collegati in un file di layout con questa sintassi Razor: @Scripts.Render("~/JavaScripts")In che modo un pacchetto (Sytem.Web.Optimization) genera l'impronta digitale del build per i collegamenti bundle?

Questo genera un link nel file di layout che include un fingerprint, che viene ri-generato su ogni app-build, per aiutare con il controllo della cache.

Così il link generato assomiglia:

<script src="/JavaScripts?v=dSMc_JTHMMP5GrWnILSYt_QBMw-g1pPlzknSorXpkyQ1"></script> 

mi piacerebbe sapere come viene generato l'impronta digitale (da utilizzare per scopi simili), ma non è ancora Sytem.Web.Optimization open-source .

+1

Non so su System.Web.Optimization, ma IIRC SquishIt utilizza in hash del contenuto dei file di crea questa impronta digitale. È possibile eseguire l'hash di tutti i file coinvolti nel processo e utilizzare un hash di esso se lo scopo del fingerprinting è quello di modificarlo ogni volta che cambia il contenuto all'interno di un file. Per riferimento è possibile consultare la fonte di SquishIt -> https://github.com/jetheredge/SquishIt – tucaz

risposta

6

L'impronta digitale viene generato utilizzando un hash sha256 dei byte dal fascio e poi codificato:

  byte[] hash = sha256.ComputeHash(Encoding.Unicode.GetBytes(bundle)); 
      return HttpServerUtility.UrlTokenEncode(hash); 
+0

Quando e dove avviene? C'è un evento che posso collegare per poter attivare il mio codice ogni volta che succede? –