2013-05-09 14 views
5

W MVC-4, zestawy do kompresji CSS & pliki JS mogą być połączone w pliku układ z tej Razor składnię: @Scripts.Render("~/JavaScripts")W jaki sposób pakiet (Sytem.Web.Optimization) generuje odcisk palca budowania dla pakietów pakietów?

Generuje łącza w pliku layoutu, który zawiera fingerprint, który jest ponownie generowany na każda aplikacja-build, aby pomóc w kontroli pamięci podręcznej.

Tak wygenerowany link wygląda następująco:

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

Chciałbym wiedzieć, jak odcisk palca jest generowany (by użyć do podobnych celów), ale nie jest jeszcze Sytem.Web.Optimization open-source .

+1

nie wiem o System.Web.Optimization, ale IIRC SquishIt używa skrótów zawartości plików do utwórz ten odcisk palca. Możesz zaszyfrować wszystkie pliki zaangażowane w proces i użyć jego skrótu, jeśli celem odcisków palców jest zmiana go, gdy zmieni się zawartość w pliku. Dla odniesienia możesz spojrzeć na źródło SquishIt -> https://github.com/jetheredge/SquishIt – tucaz

Odpowiedz

6

Odcisk palca jest generowany przy użyciu skrótu SHA256 z bajtów z pakietu, a następnie kodowane:

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

Kiedy i gdzie to się dzieje? Czy istnieje zdarzenie, które mogę zahaczyć, aby wywołać mój własny kod, kiedy to się stanie? –