2015-05-19 10 views
13

Używam ASP.net MVC 4. Podobnie jak w przypadku pytania, czy wstawiam do pliku pakiet plików JS (lub CSS), czy będzie on automatycznie zaminowywany pod numerem? Na przykład, mój pakiet powinien czytać:Czy program pakujący ASP.net automatycznie minimalizuje pliki?

 bundles.Add(new ScriptBundle("~/bundles/exampleBundle").Include(
      "~/Scripts/jquery-masked.js" 
      "~/Scripts/jquery.idletimer.js" 
      )); 

Albo zamiast powinno zawierać pliki minified początkowo:

 bundles.Add(new ScriptBundle("~/bundles/exampleBundle").Include(
      "~/Scripts/jquery-masked.min.js" 
      "~/Scripts/jquery.idletimer.min.js" 
      )); 

??

Edytuj: Teraz zastanawiam się, czy łączenie plików .min zamiast tego dodaje jakąkolwiek optymalizację. Czy zwiększy to wydajność, w tym pliki .min w pakiecie, a nie podstawowe pliki? (Może funkcja "minifier" zajmuje trochę czasu?)

+1

Dla pewności Możesz dodać ten parametr BundleTable.EnableOptimizations = true; – rnofenko

Odpowiedz

13

Bundler środowiska ASP.NET ma zawierać wszystkie skrypty w tej samej wiązce w jednym pliku, uszeregowane w kolejności są zdefiniowane w pakiecie. Ten pojedynczy plik jest następnie minimalizowany i dostarczany do klienta.

Jeśli w skrypcie znajduje się zarówno normalna, jak i skrócona wersja skryptu, program pakujący automatycznie wdroży pełny skrypt podczas sesji debugowania i wersji zminimalizowanej podczas produkcji. Powinieneś unikać odwoływania się do zminiaturyzowanych wersji swoich skryptów w konfiguracji pakietu, chyba że chcesz wdrożyć minified wersję do sesji debugowania.

+1

Tak więc, aby wyjaśnić, czy zminimalizowany plik istnieje w twoim katalogu, automatycznie go wdroży (podczas sesji produkcyjnych) i nie przeprowadzi żadnej konwersyjnej konwersjji w locie? – AlbatrossCafe

+3

jeśli istnieją minified wersje wszystkich skryptów w pakiecie, nadal będą one pakowane w jeden plik pakunku, ale plik ten nie zostanie poddany dalszej minimalizacji. w przeciwnym wypadku, minified wersje będą wstawiane do pliku z niezminijalowanymi plikami, a plik * będzie * poddawany minifikacji. – Claies

13

Nie musisz dołączać minified files, które są automatycznie wykonywane przez silnik bundle. W rzeczywistości, pamiętam, że w tym czasie zminimalizowane pliki powodowały problemy (może to jest naprawione w najnowszej wersji mvc).

Może się wydawać, że to nie działa, ponieważ optymalizacje (łączenie i minimalizowanie) są wykonywane tylko wtedy, gdy debug=false na web.config.

<system.web> 
    <compilation debug="false" /> 
</system.web> 

Jest na to sposób, aby wymusić optymalizacje nawet gdy debug = true użyciu BundleTable.EnableOptimizations. Tutaj masz przykładowe

public static void RegisterBundles(BundleCollection bundles) 
{ 
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
       "~/Scripts/jquery-{version}.js")); 

    BundleTable.EnableOptimizations = true; 
} 
1

Są to dwa różne terminy zwane sprzedaż wiązaną i zminimalizowanie.
Minifikacja: jest to zminimalizowane wersje plików JS, w których kompresujesz zawartość, zmieniając nazwy zmiennych.
Łączenie w pakiety: jest zupełnie inną rzeczą. Aby zmniejszyć liczbę wizyt w sieci, lepiej połączyć wszystko w jednym pliku i pobrać na klienta w jednym żądaniu.

Dzięki temu możesz połączyć zmonifikowaną wersję JS, aby uzyskać tę korzyść.

+0

Chociaż nie odpowiada to bezpośrednio na pytanie, jest to dobre wyjaśnienie na temat różnicy między * Minifikacją * i * Grupowaniem * –

Powiązane problemy