Minimizza l’output HTML dell’applicazione ASP.NET

Quali sono i modi con cui possiamo ridurre la dimensione della risposta HTML inviata da un’applicazione asp.net?

Sto usando i controlli che non sono di mia proprietà e produce output con spazi bianchi. Sono interessato a Minimizzare l’intero output HTML della pagina proprio come fa Google (Visualizza fonte www.google.com) per migliorare i tempi.

C’è qualche class di utilità disponibile per ASP.NET che può fare questa roba per me?

Non c’è bisogno di farlo in fase di esecuzione. Perché può essere fatto in fase di compilazione.

Dettagli: http://omari-o.blogspot.com/2009/09/aspnet-white-space-cleaning-with-no.html

Per la piattaforma Microsoft .NET esiste una libreria denominata WebMarkupMin , che produce la minificazione del codice HTML. Per ogni framework ASP.NET ha il suo modulo:

  • ASP.NET Core – WebMarkupMin.Web . Implementato come un modulo HTTP, quindi può funzionare con qualsiasi framework. Adatto per l’uso nel framework di pagine Web ASP.NET (Razor).
  • ASP.NET MVC – WebMarkupMin.Mvc
  • Web Form ASP.NET – WebMarkupMin.WebForms

La documentazione è disponibile su http://webmarkupmin.codeplex.com/documentation

Voglio commentare il suggerimento di Thorn (ma sono nuovo nello stack overflow).

  1. Il codice collegato (omari-o.blogspot.com) non supporta MVC4 e sebbene il codice sia open source, non può essere facilmente aggiornato a causa delle modifiche di frenatura tra MVC3 e MVC4.

  2. Potrebbero esserci spazi bianchi scritti sul risultato http in fase di esecuzione, solo lo sviluppatore del sito reale può saperlo. Pertanto la minimizzazione statica dei file modello (aspx) non è affatto infallibile. La minimizzazione dynamic, suggerita da gius, dovrebbe essere utilizzata per garantire che gli spazi bianchi siano rimossi correttamente e, sfortunatamente, ciò comporterà un costo di calcolo del tempo di esecuzione. Se il codice scrive dynamicmente degli spazi nell’output, dovrà essere rimosso dynamicmente .

La risposta accettata non funziona con MVC 4, quindi ecco una lib simile che si riduce in fase di compilazione https://github.com/jitbit/HtmlOptimizerMvc4

Semplicemente aggiungendo un’altra opzione che non vedo elencato qui, che è quella che mi è stato consigliato di usare:

Strumento da riga di comando minifier Html

Uso: qui e qui

C’è un problema , tuttavia, con questo strumento: lascia i commenti a riga singola (//) e causa problemi per l’analisi di Razor, poiché un commento a riga singola inserito all’interno di un blocco C # come segue:

 @{ ... ... // anything ... } 

farà sì che il resto dell’output di minification della linea, da questo punto in poi, venga ignorato dal parser di Razor, che quindi genererà un errore affermando che non potrebbe trovare la chiusura “}” per il blocco.

La mia soluzione per questo problema era di rimuovere completamente questi commenti dall’output. In questo modo funziona. Per fare ciò, è sufficiente rimuovere RegexOptions.SingleLine dalla riga 145:

 htmlContents = Regex.Replace(htmlContents, @"//(.*?)\r?\n", ""/*, RegexOptions.Singleline*/);