Prieš tai aprašytas būdas automatiškai formuoti korektišką nuorodą iki suspausto arba nesuspausto JavaScript failo nieko nesakė apie patį JavaScript failų suspaudimą. Keli skaitytojai tai teisingai pastebėjo komentaruose, o Domantas net nurodė vieną tokią realizaciją. Tai priminė man, kad savo laiku perskaitęs minėtą straipsnį, aš papildžiau ten aprašytą programą CSS suspaudimu. Programa naudoja .NET adaptuotą Yahoo UICompressor versiją.
JavaScript ir CSS failų suspaudimas Web projekto kompiliavimo metu privertė mane truputi pergalvoti praeitame straipsnyje aprašytą strategiją. Dabar tiek suspausti, tiek nesuspausti failai vadinasi vienodai, skirtumas tik tas, kad suspausti failai yra talpinami į katalogą Release. Pavyzdžiui, turint JavaScript katalogą su jquery.js ir common.js failais, Web projekto kompiliavimo metu į katalogą JavaScript/Release bus patalpinti suspausti failai jquery.js ir common.js.
Taigi realizuojant tokią strategiją, pirmą aprašykime suspaudimo programą:

Kur CompressDirectory ir CompressFile atrodo taip:

Laikykime, kad aukščiau pateiktas kodas susikompiliuoja į programą YUICompressor.exe. Tada ją kartu su priklausomomis bibliotekomis (EcmaScript.NET.modified.dll ir Yahoo.Yui.Compressor.dll) perkeliame į mūsų projektą, pavyzdžiui, katalogą Dependencies:

Tam, kad JavaScript failai iš katalogo Scripts būtų spaudžiami ir talpinami į Scripts/Release po kiekvieno Web projekto kompiliavimo, projekto nustatymuose aprašome Post-build įvykį:

Primenu, kad mano aprašytas YUICompressor priima tris argumentus: katalogą kur guli spaudžiami failai, katalogą kur bus patalpinti suspausti failais ir spaudžiamų failų tipas (js arba css).
Viskas! Dabar kiekvieno kompiliavimo metu mes turėsime suspaustus JavaScript failus:

Paskutinis žingsnis – atnaujinti praeitame straipsnyje aprašytą metodą RegisterInclude, tam kad nurodyti korektišką kelią iki JavaScript failų Debug ir Release metu:

Šaunu tai, kad iš ASPX pusės JavaScript registracija liko nepakitusi:

Taigi, jūsų pagalba, mes dabar turime pakankamai pilną JavaScript (ir CSS) failų suspaudimo ir nuorodų parinkimo strategiją. Kaip vertinote tokį sprendimą? Gal turite dar kokių minčių? Rašykite!
Rodyk draugams
Naujausi komentarai