WebMarkupMin HTML Minifier - .NET рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзреБрдирд┐рдХ HTML рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░

WebMarkupMin рд▓реЛрдЧреЛ


2012 рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдореИрдВ MSDeveloper.RU рдкрддреНрд░рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП ASP.NET MVC рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, 2 рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдП рдЧрдП: "рдЬреЗрдПрд╕ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдВрдкреАрдбрд╝рди" рдФрд░ "рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ" , рд▓реЗрдХрд┐рди рдореЗрд░реА рдпреЛрдЬрдирд╛ рдПрдХ рдФрд░ 2 рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреА рдереА: рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдФрд░ рджреВрд╕рд░рд╛ HTML рдорд╛рд░реНрдХрдЕрдк рдФрд░ рдЬреАрдЬрд╝рд┐рдк / рдбрд┐рдлреНрд▓реЗрдХреНрд╢рди рд╕рдВрдкреАрдбрд╝рди рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ (рд╕рдВрдкреАрдбрд╝рди) рдЖрдЧреЗ рдмрд╕ HTTP рд╕рдВрдкреАрдбрд╝рди)ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЦрд╛рд▓реА рд╕рдордп рдХреА рдХрдореА (рдЙрд╕ рдкрд▓ рдореЗрдВ, рдореИрдВ рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЪрд▓рд╛ рд░рд╣рд╛ рдерд╛) рдФрд░ рдкрддреНрд░рд┐рдХрд╛ рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдорд╛рдкрди рдХреЗ рдХрд╛рд░рдг рдЗрди рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрд╛ред


рд▓реЗрдХрд┐рди рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВрдиреЗ HTML рдорд╛рд░реНрдХрдЕрдк рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд▓реМрдЯрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдереЛрдбрд╝рд╛ рд╢реЛрдз рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ .NET рдХреЗ рддрд╣рдд рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреВрд░реНрдг HTML HTML рдиреНрдпреВрдирддрдо рдирд╣реАрдВ рд╣реИрдВред рд╕рднреА рдореМрдЬреВрджрд╛ .NET рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ 2 рдСрдкрд░реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВ: рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдХреЛ рд╣рдЯрд╛рдирд╛ рдФрд░ HTML рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╡реЗ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рд╕реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЦреЛ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ .NET рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ HTML рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд┐рд╕ рдкрд░ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред


HTML рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдиреНрдпреВрдирддрдо


рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ HTML рдиреНрдпреВрдирддрдордХрд░рдг рдХреЗ рд▓рдЧрднрдЧ 15 рд╕рд╛рд▓ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдФрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЯреВрд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред


рд▓реЛрдХрдкреНрд░рд┐рдп рдзрд╛рд░рдгрд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд, HTML рдиреНрдпреВрдирддрдо рддрдХрдиреАрдХ, рд╕рдорд╛рди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХрдиреАрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдИ рджреАред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 1998 рдХреЗ рдЕрдВрдд рдореЗрдВ, рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ "рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдкреИрд░рд╛рдиреЛрдЗрдпрд╛" рдХреЗ 17 рд╡реЗрдВ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рдЖрд░реНрдЯреЗрдо рд▓реЗрдмреЗрджреЗрд╡ рдиреЗ HTML рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ред


2000 рдХреЗ рджрд╢рдХ рдХреА рд╢реБрд░реБрдЖрдд рддрдХ, рдХрдИ HTML рдиреНрдпреВрдирддрдо рддрдХрдиреАрдХреЗрдВ рдЬреЛ рдЖрдЬ рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдереАрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд рдереАрдВ:


  1. рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк (рд╕реНрдкреЗрд╕, рдЯреИрдм рдФрд░ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ) рдХреЛ рд╣рдЯрд╛рдирд╛
  2. HTML рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдирд┐рдХрд╛рд▓рдирд╛
  3. рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рдЕрд╡рд╛рдВрдЫрд┐рдд рдЙрджреНрдзрд░рдг рдирд┐рдХрд╛рд▓реЗрдВ
  4. рд╡реИрдХрд▓реНрдкрд┐рдХ рдЕрдВрддрд┐рдо рдЯреИрдЧ рд╣рдЯрд╛рдирд╛ (рдЙрджрд╛ред </p> рдФрд░ </li> )

рд▓реЗрдХрд┐рди рдЦрддрд░рдирд╛рдХ рддрдХрдиреАрдХреЗрдВ рднреА рд╡реНрдпрд╛рдкрдХ рд╣реЛ рдЧрдИ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЧрд▓рдд рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЗрд╕рдХреЗ рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░ рд╕рдХрддреА рд╣реИрдВ:


  1. рд╣рдЯрд╛рдирд╛ <!DOCTYPE тАж> рдШреЛрд╖рдгрд╛
  2. рд▓рдВрдмреЗ рдЯреИрдЧреНрд╕ рдХреЛ рдЫреЛрдЯреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, <strong> рдЯреИрдЧреНрд╕ рдХреЛ <b> рдФрд░ <em> <i> рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛)

рдЙрд╕реА рд╕рдордп, рдкрд╣рд▓реЗ HTML рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рджрд┐рдЦрд╛рдИ рджрд┐рдПред рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рд▓рдЧрднрдЧ рдПрдХ рджрд░реНрдЬрди рдлреНрд░реАрд╡реЗрдпрд░ рдФрд░ рд╢реЗрдпрд░рд╡реЗрдпрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдереЗ: HTML рд╢реНрд░рд┐рдВрдХрд░ , рдирд┐рд░рдкреЗрдХреНрд╖ HTML рдХрдВрдкреНрд░реЗрд╕рд░ , HTML рдлрд╝рд╛рдЗрд▓ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░, HTML рд╕реНрд░реЛрдд рдХреНрд▓реАрдирд░, Anetto HTML рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝!, HTMLCompact, HTML рдХреЛрдб рдХреНрд▓реАрдирд░ , HTML рдХреЛрдб , рдирд┐рд░рдкреЗрдХреНрд╖ HTML рдЕрдиреБрдХреВрд▓рдХ, рдЖрджрд┐!


рдХрд╛рд░реНрдпрдХреНрд░рдо "рдПрдЪрдПрдХреНрдпреВрдПрд▓ рдлрд╝рд╛рдЗрд▓ рдФрд░ 1.1.0"

рдЕрдВрдЬреАрд░ред 1. HTML рдлрд╝рд╛рдЗрд▓ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ 1.1.0 - 2000 рдХреЗ рджрд╢рдХ рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ HTML рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░

2000 рдХреЗ рджрд╢рдХ рдХреЗ рдордзреНрдп рддрдХ, XHTML рдорд╛рдирдХ рд╡реНрдпрд╛рдкрдХ рдерд╛, рдЬрд┐рд╕реЗ XML рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ HTML рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдЗрди рдирд┐рдпрдореЛрдВ рдиреЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЙрджреНрдзрд░рдг рд╣рдЯрд╛рдиреЗ рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдкреНрддрд┐ рдЯреИрдЧ рд╣рдЯрд╛рдиреЗ рдкрд░ рд░реЛрдХ рд▓рдЧрд╛ рджреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рдЦреНрдд рдПрдХреНрд╕рдПрдЪрдЯреАрдПрдордПрд▓ рдирд┐рдпрдореЛрдВ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝рддреЗ рдереНрд░реВрдкреБрдЯ рдиреЗ рдЗрд╕ рддрдереНрдп рдХреЛ рдЬрдиреНрдо рджрд┐рдпрд╛ рд╣реИ рдХрд┐ HTML рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдзреАрд░реЗ-рдзреАрд░реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдИ рд╣реИред


рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореЛрдмрд╛рдЗрд▓ рд╡реЗрдм рдХреА рд╡реГрджреНрдзрд┐ рдФрд░ рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдорд╛рдирдХ рдХреЗ рдЖрдЧрдорди рдХреЗ рдХрд╛рд░рдг, рдПрдЪрдЯреАрдПрдордПрд▓ рдЕрдк рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИред HTML5 рдорд╛рдирдХ HTML 4.01 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ HTML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред Google рдХреЗ HTML / CSS рдХреЛрдб рдбрд┐рдЬрд╝рд╛рдЗрди рдЧрд╛рдЗрдб рдФрд░ рдпреВрд░реА рдЬрд╝рд┐рдЯрд╕реЗрд╡ рдХреЗ рд▓реЗрдЦ "рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд┐рдВрдЧ HTML" рдореЗрдВ рдХрдИ рдирдИ рдиреНрдпреВрдирддрдо рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдпрд╣ рд╕рдм HTML5 рдХреЗ рд▓рд┐рдП рдЙрдиреНрдореБрдЦ рдирдП рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдПрдЪрдЯреАрдПрдордПрд▓-рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рдХреЗ рдЙрджреНрднрд╡ рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛ред рдлрд┐рд▓рд╣рд╛рд▓, 2 рдиреНрдпреВрдирддрдорд┐рдпреЛрдВ рдиреЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХреА рд╣реИ: рд╕рд░реНрдЧреЗрдИ рдХреЛрд╡рд▓рдЪреБрдХ рдХреА рдПрдЪрдЯреАрдПрдордПрд▓рдХрдВрдкреНрд░реЗрд╕рд░ (рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ) рдФрд░ рдпреВрд░реА рдЬреИрддрд╕реЗрд╡ рдХреА рдПрдХреНрд╕рдкреЗрд░рд┐рдореЗрдВрдЯрд▓ HTML рдорд┐рдирд┐рдлрд╛рдпрд░ (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд┐рдд)ред


рд╡реЗрдм рдорд╛рд░реНрдХрдЕрдк рдЦрдирд┐рдЬ рдкрд░рд┐рдпреЛрдЬрдирд╛


Web Markup Minifier (рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WebMarkupMin) рдмрдирд╛рддреЗ рд╕рдордп, рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ .NET .NET рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзреБрдирд┐рдХ HTML рдиреНрдпреВрдирддрдо рдмрдирд╛рдиреЗ рдФрд░ ASP.NET рдХреЗ рд╕рд╛рде рдЗрд╕рдХреЗ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдХрд╛рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИред WebMarkupMin рдПрдХ Open Source рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╕реЛрд░реНрд╕ рдХреЛрдб CodePlex рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рддрд░рдг NuGet рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


HTML рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛, WebMarkupMin рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЗ XHTML рдФрд░ XML рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдЪреВрдВрдХрд┐ рдпрд╣ рд▓реЗрдЦ HTML рдиреНрдпреВрдирддрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИ, рдпрд╣ HTML рдиреНрдпреВрдирддрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдХреЗрд╡рд▓ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╣реИ:


рдХреЛрд░


WebMarkupMin.Core рдореЙрдбреНрдпреВрд▓ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ 4.0 рдХреЗ рддрд╣рдд рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ .NET рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: ASP.NET, рд╡рд┐рдВрдбреЛрдЬ рдлреЙрд░реНрдо, WPF рдФрд░ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиред рдЪреВрдВрдХрд┐ рд╕рднреА рдорд╛рд░реНрдХрдЕрдк рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рди рдХреЗрд╡рд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рднреА рдХрдо рд╕реЗ рдХрдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WebMarkupMin рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдХреЗ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рднрд╛рдЧ рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╕рдордп рд▓реЗрдЦ рдХреЗ рдкрд╛рда рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХрд░реЗрдВ)ред


рдорд╛рд░реНрдХрдЕрдк рдиреНрдпреВрдирддрдо


WebMarkupMin.ore рдореЙрдбреНрдпреВрд▓ рдореЗрдВ 3 рдорд╛рд░реНрдХрдЕрдк рдиреНрдпреВрдирддрдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:


  1. HtmlMinifierред HTML рдФрд░ XHTML рдХреЛрдб рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рддрд╛ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдорд╛рдиреНрдп HTML рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
  2. XhtmlMinifierред HTML рдФрд░ XHTML рдХреЛрдб рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рддрд╛ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХреНрд╕рдПрдЪрдЯреАрдПрдордПрд▓ рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдирд┐рдпрдореЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
  3. XmlMinifierред XML рдХреЛрдб рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рддрд╛ рд╣реИред

HtmlMinifier рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:


 namespace WebMarkupMin.Example.Console { using System; using System.Collections.Generic; using WebMarkupMin.Core; using WebMarkupMin.Core.Minifiers; using WebMarkupMin.Core.Settings; class Program { static void Main(string[] args) { const string htmlInput = @"<!DOCTYPE html> <html> <head> <meta charset=""utf-8"" /> <title> </title> <link href=""favicon.ico"" rel=""shortcut icon"" type=""image/x-icon"" /> <meta name=""viewport"" content=""width=device-width"" /> <link rel=""stylesheet"" type=""text/css"" href=""/Content/Site.css"" /> </head> <body> <p>- тАж</p> <script src=""http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js""></script> <script>(window.jquery) || document.write('<script src=""/Scripts/jquery-1.9.1.min.js""><\/script>');</script> </body> </html>"; var settings = new HtmlMinificationSettings { WhitespaceMinificationMode = WhitespaceMinificationMode.Aggressive, RemoveHttpProtocolFromAttributes = true, RemoveHttpsProtocolFromAttributes = true }; var htmlMinifier = new HtmlMinifier(settings); MarkupMinificationResult result = htmlMinifier.Minify(htmlInput, generateStatistics: true); if (result.Errors.Count == 0) { MinificationStatistics statistics = result.Statistics; if (statistics != null) { Console.WriteLine("  : {0:N0} ", statistics.OriginalSize); Console.WriteLine("  : {0:N0} ", statistics.MinifiedSize); Console.WriteLine(": {0:N2}%", statistics.SavedInPercent); } Console.WriteLine(" :{0}{0}{1}", Environment.NewLine, result.MinifiedContent); } else { IList<MinificationErrorInfo> errors = result.Errors; Console.WriteLine(" {0:N0} :", errors.Count); Console.WriteLine(); foreach (var error in errors) { Console.WriteLine(" {0},  {1}: {2}", error.LineNumber, error.ColumnNumber, error.Message); Console.WriteLine(); } } } } } 

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо HtmlMinificationSettings рд╡рд░реНрдЧ рдХреЛ HtmlMinificationSettings рдФрд░ рдХреБрдЫ HTML HtmlMinificationSettings рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВред рддрдм рд╣рдо рдЗрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ HtmlMinifier рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╣рдо рдирд┐рдореНрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде Minify рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ: рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ HTML рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ - рдПрдХ рдзреНрд╡рдЬ рдЬреЛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЬрд╛рдирдХрд╛рд░реА рдХреА рдкреАрдврд╝реА рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдЧрд▓рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рдирд┐рд░реНрдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ) рд╕рдордп рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд░реНрд╡рд░ рд╕рдВрд╕рд╛рдзрди)ред MarkupMinificationResult рд╡рд┐рдзрд┐ MarkupMinificationResult рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рд╡рд╕реНрддреБ MarkupMinificationResult , рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ:



рдпрджрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдЦрд╛рд▓реА рд╣реИ, рддреЛ рдЖрдВрдХрдбрд╝реЗ рдФрд░ рдХрдо рд╕реЗ рдХрдо рдХреЛрдб рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ; рдЕрдиреНрдпрдерд╛, рддреНрд░реБрдЯрд┐ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИред


рдЕрдм HtmlMinificationSettings рд╡рд░реНрдЧ рдХреЗ рдЧреБрдгреЛрдВ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ HtmlMinificationSettings :


рдЯреЗрдмрд▓ред 1. HtmlMinificationSettings рд╡рд░реНрдЧ рдХреЗ рдЧреБрдг

рд╕рдВрдкрддреНрддрд┐рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдирд╡рд┐рд╡рд░рдг
WhitespaceMinificationModeрдЧрдгрдирд╛Medium

рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдорд┐рдирд┐рдорд╛рдЗрдЬреЗрд╢рди рдореЛрдбред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИ:


  • рдХреЛрдИ рдирд╣реАрдВред рдЕрдкрдиреЗ рдореВрд▓ рд░реВрдк рдореЗрдВ рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рд░рдЦрддрд╛ рд╣реИред
  • рд╕реБрд░рдХреНрд╖рд┐рддред рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдХрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдиреНрдпреВрдирддрдордХрд░рдг: рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рд╕реЗ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ; рдХрдИ рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдкрд╛рддреНрд░реЛрдВ рдХреЛ рд╕рд┐рдВрдЧрд▓ рд╕реНрдкреЗрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; DOCTYPE рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрдЧрд╛рдореА рдЕрдиреБрдЧрд╛рдореА рд╕реНрдерд╛рди; рдЕрджреГрд╢реНрдп рдЯреИрдЧ ( html , head , body , meta , link , script , рдЖрджрд┐) рдХреЗ рдмрд╛рд╣рд░реА рдФрд░ рдЖрдВрддрд░рд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрдиреБрдЧрд╛рдореА рд░рд┐рдХреНрдд рд╕реНрдерд╛рди script ; рдЧреИрд░-рд╕реНрд╡-рдирд┐рд╣рд┐рдд рдЯреИрдЧ (рдЯреИрдЧ li , dt , dd , rt , rp , option , tr , td , th , рдЖрджрд┐) рдХреА рдмрд╛рд╣рд░реА рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЕрдиреБрдЧрд╛рдореА рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдордзреНрдпрдоред рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдкрд╛рддреНрд░реЛрдВ рдХреЗ рдиреНрдпреВрдирддрдо рд╕реНрддрд░ рдХрд╛ рдордзреНрдпрдо рд╕реНрддрд░: рд╕реБрд░рдХреНрд╖рд┐рдд рдиреНрдпреВрдирддрдордХрд░рдг рдХреЗ рд╕рднреА рд╕рдВрдЪрд╛рд▓рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ + рдмреНрд▓реЙрдХ рддрддреНрд╡реЛрдВ рдХреА рдмрд╛рд╣рд░реА рдФрд░ рдЖрдВрддрд░рд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрдиреБрдЧрд╛рдореА рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдЖрдХреНрд░рд╛рдордХ ред рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдкрд╛рддреНрд░реЛрдВ рдХреЗ рдЖрдХреНрд░рд╛рдордХ рдиреНрдпреВрдирддрдордХрд░рдг: рд╕рднреА рдордзреНрдп-рд╕реНрддрд░реАрдп рдиреНрдпреВрдирддрдордХрд░рдг рдСрдкрд░реЗрд╢рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ + рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ рдЗрдирд▓рд╛рдЗрди рдФрд░ рдЗрдирд▓рд╛рдЗрди-рдмреНрд▓реЙрдХ рддрддреНрд╡реЛрдВ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

RemoveHtmlCommentsрдмреВрд▓рд┐рдпрдиtrueInternet Explorer рдФрд░ noindex рджреНрд╡рд╛рд░рд╛ рд╕рд╢рд░реНрдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╕рднреА HTML рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдПрдХ рдзреНрд╡рдЬред
RemoveHtmlCommentsFromScriptsAndStylesрдмреВрд▓рд┐рдпрдиtruescript рдФрд░ style рдЯреИрдЧ рд╕реЗ HTML рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдзреНрд╡рдЬред
RemoveCdataSectionsFromScriptsAndStylesрдмреВрд▓рд┐рдпрдиtruescript рдФрд░ style рдЯреИрдЧ рд╕реЗ CDATA рдЕрдиреБрднрд╛рдЧ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдзреНрд╡рдЬред
UseShortDoctypeрдмреВрд▓рд┐рдпрдиtrueрдореМрдЬреВрджрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдзреНрд╡рдЬ <!DOCTYPE html> ред
UseMetaCharsetTagрдмреВрд▓рд┐рдпрдиtrue<meta http-equiv="content-type" content="text/html; charset=тАж"> рдХреЛ <meta charset="тАж"> рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдзреНрд╡рдЬред
EmptyTagRenderModeрдЧрдгрдирд╛NoSlash

рдЦрд╛рд▓реА рдЯреИрдЧ рдХрд╛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдореЛрдбред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИ:


  • NoSlash ред рдХреЛрдИ рд╕реНрд▓реИрд╢ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, <br> );
  • рд╕реНрд▓реЗрд╢ред рдПрдХ рд╕реНрд▓реИрд╢ рдХреЗ рд╕рд╛рде (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, <br/> );
  • SpaceAndSlash ред рдПрдХ рд╕реНрд▓реИрд╢ рдФрд░ рдПрдХ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, <br /> )ред

RemoveOptionalEndTagsрдмреВрд▓рд┐рдпрдиtrueрд╡реИрдХрд▓реНрдкрд┐рдХ рдЕрдВрдд рдЯреИрдЧ ( html , head , body , p , li , dt , dd , rt , rp , optgroup , option , thead , tfoot , tbody , tbody , tr , th рдФрд░ td ) рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдзреНрд╡рдЬред
RemoveTagsWithoutContentрдмреВрд▓рд┐рдпрдиfalseрдПрдХ рдРрд╕рд╛ рдЯреИрдЧ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ textarea , tr , th , td рдЯреИрдЧ рдФрд░ class , id , name , role , src рдФрд░ data-* рд╕рд╛рде рдЦрд╛рд▓реА рд╕рд╛рдордЧреНрд░реА рд╣реИред
CollapseBooleanAttributesрдмреВрд▓рд┐рдпрдиtrueрдмреВрд▓рд┐рдпрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ "рддрд╣" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдзреНрд╡рдЬ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, checked="checked" checked рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо checked )ред
RemoveEmptyAttributesрдмреВрд▓рд┐рдпрдиtrueрдЦрд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдзреНрд╡рдЬ (рдХреЗрд╡рд▓ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ: class , id , name , style , title , lang , dir , рдИрд╡реЗрдВрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ, form рдЯреИрдЧ рдХреА action рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ input рдЯреИрдЧ рдХреЗ value рд╡рд┐рд╢реЗрд╖рддрд╛)ред
AttributeQuotesRemovalModeрдЧрдгрдирд╛Html5

HTML рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рдЙрджреНрдзрд░рдг рд╣рдЯрд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИ:


  • KeepQuotesред рдЙрджреНрдзрд░рдг рд╕рд╣реЗрдЬреЗрдВ;
  • Html4 HTML 4.X рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЙрджреНрдзрд░рдг рд╣рдЯрд╛рддрд╛ рд╣реИ;
  • Html5 HTML5 рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЙрджреНрдзрд░рдг рд╣рдЯрд╛рддрд╛ рд╣реИред

RemoveRedundantAttributesрдмреВрд▓рд┐рдпрдиtrue

рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдзреНрд╡рдЬ:


  • <рд▓рд┐рдкрд┐ рднрд╛рд╖рд╛ = "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ" >
  • <script src = "..." charset = "..." >
  • <рд▓рд┐рдВрдХ rel = "рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ" charset = "..." >
  • <form method = "get" >
  • <рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ = "рдЯреЗрдХреНрд╕реНрдЯ" >
  • <a id="... name="...>
  • <рдХреНрд╖реЗрддреНрд░ рдЖрдХрд╛рд░ = "рд░реЗрдХреНрдЯ" >

RemoveJsTypeAttributesрдмреВрд▓рд┐рдпрдиtruescript рдЯреИрдЧ рд╕реЗ type="text/javascript" рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдзреНрд╡рдЬред
RemoveCssTypeAttributesрдмреВрд▓рд┐рдпрдиtruestyle рдФрд░ link рдЯреИрдЧ рд╕реЗ type="text/css" рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдзреНрд╡рдЬред
RemoveHttpProtocolFromAttributesрдмреВрд▓рд┐рдпрдиfalseHTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЙрдкрд╕рд░реНрдЧ ( http: рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рдзреНрд╡рдЬ рдЬрд┐рдирдореЗрдВ URL рд╣реЛрддреЗ рд╣реИрдВ ( rel="external" рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдЯреИрдЧ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ)ред
RemoveHttpsProtocolFromAttributesрдмреВрд▓рд┐рдпрдиfalseHTTPS рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЙрдкрд╕рд░реНрдЧ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдзреНрд╡рдЬ ( https: рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рд╣реИ рдЬрд┐рдирдореЗрдВ URL рд╣реЛрддреЗ рд╣реИрдВ ( rel="external" рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдЯреИрдЧ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ)ред
RemoveJsProtocolFromAttributesрдмреВрд▓рд┐рдпрдиtruejavascript: рдЫрджреНрдо рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЙрдкрд╕рд░реНрдЧ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдЭрдВрдбрд╛ javascript: рдШрдЯрдирд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗред
MinifyEmbeddedCssCodeрдмреВрд▓рд┐рдпрдиtrueрдлреНрд▓реИрдЧ рдЬреЛ style рдЯреИрдЧ рдореЗрдВ CSS рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
MinifyInlineCssCodeрдмреВрд▓рд┐рдпрдиtrueрдПрдХ рдзреНрд╡рдЬ рдЬреЛ style рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
MinifyEmbeddedJsCodeрдмреВрд▓рд┐рдпрдиtruescript рдЯреИрдЧ рдореЗрдВ рдЬреЗрдПрд╕ рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдзреНрд╡рдЬред
MinifyInlineJsCodeрдмреВрд▓рд┐рдпрдиtrueрдШрдЯрдирд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ javascript: рдЫрджреНрдо рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХ рдореЗрдВ рдЬреЗрдПрд╕ рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдзреНрд╡рдЬ javascript:

рдпрджрд┐ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╕рдорд╛рди HTML рдиреНрдпреВрдирддрдордХрд░рдг рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ ( App.config рдпрд╛ Web.config ) рдореЗрдВ /configuration/webMarkupMin/core/html рддрддреНрд╡ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <sectionGroup name="webMarkupMin"> <section name="core" type="WebMarkupMin.Core.Configuration.CoreConfiguration, WebMarkupMin.Core" /> тАж </sectionGroup> тАж </configSections> тАж <webMarkupMin xmlns="http://tempuri.org/WebMarkupMin.Configuration.xsd"> <core> <html whitespaceMinificationMode="Medium" removeHtmlComments="true" removeHtmlCommentsFromScriptsAndStyles="true" removeCdataSectionsFromScriptsAndStyles="true" useShortDoctype="true" useMetaCharsetTag="true" emptyTagRenderMode="NoSlash" removeOptionalEndTags="true" removeTagsWithoutContent="false" collapseBooleanAttributes="true" removeEmptyAttributes="true" attributeQuotesRemovalMode="Html5" removeRedundantAttributes="true" removeJsTypeAttributes="true" removeCssTypeAttributes="true" removeHttpProtocolFromAttributes="false" removeHttpsProtocolFromAttributes="false" removeJsProtocolFromAttributes="true" minifyEmbeddedCssCode="true" minifyInlineCssCode="true" minifyEmbeddedJsCode="true" minifyInlineJsCode="true" /> тАж </core> тАж </webMarkupMin> тАж </configuration> 

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдорд╛рди рдХреЗ рд╕рд╛рде HtmlMinificationSettings рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:


 HtmlMinificationSettings settings = WebMarkupMinContext.Current.Markup.GetHtmlMinificationSettings(); 

рдЖрдк HtmlMinifier рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ (HTML рдиреНрдпреВрдирддрдо рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкрдВрдЬреАрдХреГрдд: CSS рдиреНрдпреВрдирддрдо, рдЬреЗрдПрд╕ рдиреНрдпреВрдирддрдо рдФрд░ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛):


 HtmlMinifier htmlMinifier = WebMarkupMinContext.Current.Markup.CreateHtmlMinifierInstance(); 

HTML рдиреНрдпреВрдирддрдо рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ ASP.NET рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


CSS рдФрд░ JS рдХреЛрдб рдиреНрдпреВрдирддрдо


рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, HtmlMinifier рдФрд░ XhtmlMinifier рд╕рдкреЛрд░реНрдЯ: style рдЯреИрдЧ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ CSS рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдирд╛ рдФрд░ script рдЯреИрдЧ, рдИрд╡реЗрдВрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, onclick ) рдФрд░ javascript: рд╕рд╛рде рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдирд╛ javascript: рдЫрджреНрдо-рдкреНрд░реЛрдЯреЛрдХреЙрд▓ред


CSS рдФрд░ JS рдХреЛрдб рдЙрди рд╡рд░реНрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрдо рд╕реЗ рдХрдо рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ ICssMinifier рдФрд░ IJsMinifier рдХреЛ WebMarkupMin.Core.Minifiers рдирд╛рдорд╕реНрдерд╛рди рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


рдХрд░реНрдиреЗрд▓ рдореЗрдВ рджреЛ рд╡рд░реНрдЧ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ ICssMinifier рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:


  1. NullCssMinifierред рдПрдХ рд╕реНрдЯрдм рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рдХреЛрдИ рдЗрдирд▓рд╛рдЗрди рд╕реНрдЯрд╛рдЗрд▓ рди рд╣реЛрдВред
  2. KristensenCssMinifierред рдореИрдбреНрд╕ рдХреНрд░рд┐рд╕реНрдЯреЗрдВрд╕рди рдХреА рдХреБрд╢рд▓ рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдорд┐рдирд┐рдлрд╛рдпрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрдорд┐рдд рд╕рд░рд▓рддрдо рд╕реАрдПрд╕рдПрд╕ рдХреЛрдб рдиреНрдпреВрдирддрдоред рдбрд┐рдлрд╝реЙрд▓реНрдЯ CSS рдиреНрдпреВрдирддрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдФрд░ рджреЛ рдХрдХреНрд╖рд╛рдПрдВ рдЬреЛ IJsMinifier рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИрдВ:


  1. NullJsMinifierред рдПрдХ рд╕реНрдЯрдм рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
  2. CrockfordJsMinifierред рдбрдЧрд▓рд╕ рдХреНрд░реЙрдХрдлреЛрд░реНрдб рдХреЗ JSMin рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╕рд░рд▓рддрдо JS рдХреЛрдб рдиреНрдпреВрдирддрдоред рдбрд┐рдлрд╝реЙрд▓реНрдЯ JS рдиреНрдпреВрдирддрдордХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

CSS рдФрд░ JS рдиреНрдпреВрдирддрдордХреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рд░реНрдХрдЕрдк рдиреНрдпреВрдирддрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 var kristensenCssMinifier = new KristensenCssMinifier(); var crockfordJsMinifier = new CrockfordJsMinifier(); var htmlMinifier = new HtmlMinifier(cssMinifier: kristensenCssMinifier, jsMinifier: crockfordJsMinifier); 

рдпрджрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдорд╛рд░реНрдХрдЕрдк рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ CSS рдФрд░ JS рдиреНрдпреВрдирддрдордХ рдХреЛ рдиреНрдпреВрдирддрдо рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдХреЗ рдорд╛рд░реНрдХрдЕрдк рдиреНрдпреВрдирддрдо рдкрд░ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <sectionGroup name="webMarkupMin"> <section name="core" type="WebMarkupMin.Core.Configuration.CoreConfiguration, WebMarkupMin.Core" /> тАж </sectionGroup> тАж </configSections> тАж <webMarkupMin xmlns="http://tempuri.org/WebMarkupMin.Configuration.xsd"> <core> тАж <css defaultMinifier="KristensenCssMinifier"> <minifiers> <add name="NullCssMinifier" displayName="Null CSS Minifier" type="WebMarkupMin.Core.Minifiers.NullCssMinifier, WebMarkupMin.Core" /> <add name="KristensenCssMinifier" displayName="Mads Kristensen's CSS minifier" type="WebMarkupMin.Core.Minifiers.KristensenCssMinifier, WebMarkupMin.Core" /> </minifiers> </css> <js defaultMinifier="CrockfordJsMinifier"> <minifiers> <add name="NullJsMinifier" displayName="Null JS Minifier" type="WebMarkupMin.Core.Minifiers.NullJsMinifier, WebMarkupMin.Core" /> <add name="CrockfordJsMinifier" displayName="Douglas Crockford's JS Minifier" type="WebMarkupMin.Core.Minifiers.CrockfordJsMinifier, WebMarkupMin.Core" /> </minifiers> </js> тАж </core> тАж </webMarkupMin> тАж </configuration> 

рдпрджрд┐ CSS рдФрд░ JS рдиреНрдпреВрдирддрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рдЙрджрд╛рд╣рд░рдг рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:


 ICssMinifier cssMinifier = WebMarkupMinContext.Current.Code.CreateCssMinifierInstance("KristensenCssMinifier"); IJsMinifier jsMinifier = WebMarkupMinContext.Current.Code.CreateJsMinifierInstance("CrockfordJsMinifier"); 

рдпрджрд┐ рдЖрдк рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЬреЗрдПрд╕ рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреНрдпреВрдирддрдо рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВ, рддреЛ рдЖрдк рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 ICssMinifier cssMinifier = WebMarkupMinContext.Current.Code.CreateDefaultCssMinifierInstance(); IJsMinifier jsMinifier = WebMarkupMinContext.Current.Code.CreateDefaultJsMinifierInstance(); 

рд╡рд╛рд▓реЛрдВ


рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, WebMarkupMin рд▓реЙрдЧрд░реНрд╕ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдЕрдкрдиреЗ рд▓реЙрдЧ рдореЗрдВ рдХреЗрдВрджреНрд░реАрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХреЛрдИ рднреА рд╡рд░реНрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ ILogger рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдпрд╛ WebMarkupMin.Core.Loggers рдирд╛рдо рд╕реНрдерд╛рди рд╕реЗ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ LoggerBase рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ WebMarkupMin.Core.Loggers рд╣реИред


рдХрд░реНрдиреЗрд▓ рдореЗрдВ рджреЛ рд╡рд░реНрдЧ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ ILogger рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:


  1. NullLoggerред рдПрдХ рд╕реНрдЯрдм рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдЖрдк рд╕реНрд╡рдпрдВ MarkupMinificationResult рд╡рд░реНрдЧ рдХреА Errors рдФрд░ Warnings рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
  2. ThrowExceptionLoggerред рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдиреНрдпреВрдирддрдо рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рд╣реЛрддреА рд╣реИ, рддреЛ ThrowExceptionLogger рд╡рд░реНрдЧ ThrowExceptionLogger рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдкрд╡рд╛рдж ThrowExceptionLogger ред

рдПрдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдЕрдкрдиреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рд░реНрдХрдЕрдк рдиреНрдпреВрдирддрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 var htmlMinifier = new HtmlMinifier(logger: new ThrowExceptionLogger()); 

рдпрджрд┐ рдорд╛рд░реНрдХрдЕрдк рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд▓реЙрдЧрд░ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝рд╛рдЗрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдХреЗ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <sectionGroup name="webMarkupMin"> <section name="core" type="WebMarkupMin.Core.Configuration.CoreConfiguration, WebMarkupMin.Core" /> тАж </sectionGroup> тАж </configSections> тАж <webMarkupMin xmlns="http://tempuri.org/WebMarkupMin.Configuration.xsd"> <core> тАж <logging defaultLogger="ThrowExceptionLogger"> <loggers> <add name="NullLogger" displayName="Null Logger" type="WebMarkupMin.Core.Loggers.NullLogger, WebMarkupMin.Core" /> <add name="ThrowExceptionLogger" displayName="Throw exception logger" type="WebMarkupMin.Core.Loggers.ThrowExceptionLogger, WebMarkupMin.Core" /> </loggers> </logging> </core> тАж </webMarkupMin> тАж </configuration> 

рдпрджрд┐ рд▓реЙрдЧрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реИ, рддреЛ рдЖрдк рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:


 ILogger logger = WebMarkupMinContext.Current.CreateLoggerInstance("ThrowExceptionLogger"); 

рддрджрдиреБрд╕рд╛рд░, рдПрдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 ILogger logger = WebMarkupMinContext.Current.CreateDefaultLoggerInstance(); 

рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ:


 ILogger logger = WebMarkupMinContext.Current.GetLoggerInstance("ThrowExceptionLogger"); 

рдФрд░


 ILogger logger = WebMarkupMinContext.Current.GetDefaultLoggerInstance(); 

рдмрд╛рд╣рд░реА рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЬреЗрдПрд╕ рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░


рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЬреЗрдПрд╕ рдХреЛрдб рдиреНрдпреВрдирддрдо рдХреЗрд╡рд▓ рд╕рд░рд▓ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреА рд╕рдВрдкреАрдбрд╝рди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, .NET рд╕рдореБрджрд╛рдп рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдПрдбреЗрдкреНрдЯрд░ рдпреБрдХреНрдд рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдП рдЧрдП рдереЗ: .Net рдХреЗ рд▓рд┐рдП Microsoft Ajax Minifier рдФрд░ YUI рдХрдВрдкреНрд░реЗрд╕рд░ ред


WebMarkupMin.MsAjax рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рджреЛ рдиреНрдпреВрдирддрдо рдПрдбреЗрдкреНрдЯрд░ рд╣реЛрддреЗ рд╣реИрдВ: MsAjaxCssMinifier рдФрд░ MsAjaxJsMinifier ред WebMarkupMin.Yui рдореЙрдбреНрдпреВрд▓ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИ: YuiCssMinifier рдФрд░ YuiJsMinifier ред


рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдП рдЧрдП рдПрдбреЗрдкреНрдЯрд░ рдХреЛ рдПрдХ рд╣реА рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рд░реНрдХрдЕрдк рдиреНрдпреВрдирддрдо рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рд╣реИрдВред


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдкрд░реЛрдХреНрдд рдмрд╛рд╣рд░реА webMarkupMin/msAjax рдХреА webMarkupMin/msAjax рдХреЛ webMarkupMin/msAjax рдФрд░ webMarkupMin/yui рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬреЛ рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдЗрд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдкрд╛рдПрдВрдЧреЗ)ред


ASP.NET рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди


WebMarkupMin: рд╡реЗрдм рдПрдХреНрд╕рдЯреЗрдВрд╢рди


WebMarkupMin.Web рдореЙрдбреНрдпреВрд▓ ASP.NET рдХрд░реНрдиреЗрд▓ рд╕реНрддрд░ рдкрд░ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА ASP.NET рдлреНрд░реЗрдорд╡рд░реНрдХ: рд╡реЗрдм рдлреЙрд░реНрдо, MVC рдФрд░ рд╡реЗрдм рдкреЗрдЬ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


WebMarkupMin.Web рдореЗрдВ рдЙрди HTTP рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд░реНрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ ASP.NET рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреЛ рдиреНрдпреВрдирддрдо рдФрд░ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ:


  1. HtmlMinificationModuleред HTML Minifier рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ content type text/html рд╕рд╛рде HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
  2. XhtmlMinificationModuleред text/html рдорд┐рдирд┐рдлрд╛рдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд░ рдХреЗ text/html рдпрд╛ application/xhtml+xml рд╕рд╛рде HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
  3. XmlMinificationModuleред XML- рдЖрдзрд╛рд░рд┐рдд рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рддрд╛ рд╣реИ (рдПрдХреНрд╕рдПрдордПрд▓ рдорд┐рдирд┐рдлрд╛рдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ application/xhtml+xml рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде)ред
  4. CompressionModuleред рдПрдХ рдкрд╛рда рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ HTTP рд╕рдВрдкреАрдбрд╝рди рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред

рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз HTTP рдореЙрдбреНрдпреВрд▓ рдХреЗрд╡рд▓ 200 рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ HtmlMinificationModule рдФрд░ XhtmlMinificationModule рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


Web.config рдлрд╝рд╛рдЗрд▓ рдореЗрдВ HTTP рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:


 <?xml version="1.0" encoding="utf-8"?> <configuration> тАж <system.webServer> <modules> <add name="HtmlMinificationModule" type="WebMarkupMin.Web.HttpModules.HtmlMinificationModule, WebMarkupMin.Web" /> <add name="CompressionModule" type="WebMarkupMin.Web.HttpModules.CompressionModule, WebMarkupMin.Web" /> тАж </modules> тАж </system.webServer> тАж </configuration> 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрди HTTP рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ webMarkupMin/webExtensions рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <sectionGroup name="webMarkupMin"> <section name="core" type="WebMarkupMin.Core.Configuration.CoreConfiguration, WebMarkupMin.Core" /> <section name="webExtensions" type="WebMarkupMin.Web.Configuration.WebExtensionsConfiguration, WebMarkupMin.Web" /> тАж </sectionGroup> тАж </configSections> тАж <webMarkupMin xmlns="http://tempuri.org/WebMarkupMin.Configuration.xsd"> тАж <webExtensions enableMinification="true" disableMinificationInDebugMode="true" enableCompression="true" disableCompressionInDebugMode="true" maxResponseSize="100000" /> тАж </webMarkupMin> тАж </configuration> 

рд╣рдо webExtensions рд╕рднреА рдЧреБрдгреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрдиреБрднрд╛рдЧ:


рдЯреЗрдмрд▓ред 2 webExtensions рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрдиреБрднрд╛рдЧ webExtensions

рд╕рдВрдкрддреНрддрд┐рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдирд╡рд┐рд╡рд░рдг
enableMinificationрдмреВрд▓рд┐рдпрдиtrueрдорд╛рд░реНрдХрдЕрдк рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред
disableMinificationInDebugModeрдмреВрд▓рд┐рдпрдиtrueрдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХрд░реЗрдВред
enableCompressionрдмреВрд▓рд┐рдпрдиtrueрдкрд╛рда рд╕рд╛рдордЧреНрд░реА рдХреЗ HTTP рд╕рдВрдкреАрдбрд╝рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред
disableCompressionInDebugModeрдмреВрд▓рд┐рдпрдиtrueрдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рдкрд╛рда рд╕рд╛рдордЧреНрд░реА рдХреЗ HTTP рд╕рдВрдкреАрдбрд╝рди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред
maxResponseSizeрдкреВрд░реНрдгрд╛рдВрдХ100 000HTTP рдкреНрд░рддрд┐рд╕рд╛рдж рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ (рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ) рдЬрд┐рд╕рдХреЗ рдКрдкрд░ рдорд╛рд░реНрдХрдЕрдк рдиреНрдпреВрдирддрдордХрд░рдг рдЕрдХреНрд╖рдо рд╣реИред

рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп WebMarkupMin рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: WebMarkupMin.Mvc рдФрд░ WebMarkupMin.WebFormsред


, HTTP- ASP.NET-, MVC Web Forms , HTTP- . HTTP- , ASP.NET Web Pages.


WebMarkupMin: ASP.NET MVC Extensions


WebMarkupMin.Mvc -, ASP.NET MVC 3 4.


WebMarkupMin.Mvc 4 :


  1. MinifyHtmlAttribute. HTML Minifier. text/html , InvalidContentTypeException .
  2. MinifyXhtmlAttribute. XHTML Minifier. text/html application/xhtml+xml , InvalidContentTypeException .
  3. MinifyXmlAttribute. XML Minifier. XML, InvalidContentTypeException .
  4. CompressContentAttribute. HTTP- .

:


 namespace WebMarkupMin.Example.Mvc.Controllers { using System.Web.Mvc; using Infrastructure.ActionResults; using WebMarkupMin.Mvc.ActionFilters; public class HomeController : Controller { [CompressContent] [MinifyHtml] [OutputCache(CacheProfile = "CacheCompressedContent5Minutes")] public ActionResult Index() { тАж } тАж } } 

HTTP- , OutputCacheAttribute .


WebMarkupMin: ASP.NET Web Forms Extensions


WebMarkupMin.WebForms -, ASP.NET Web Forms 4.0 4.5.


WebMarkupMin.WebForms 3 Web Forms:


  1. CompressedPage. HTTP-.
  2. MinifiedAndCompressedHtmlPage. HTML- HTTP-.
  3. MinifiedAndCompressedXhtmlPage. XHTML- HTTP-.

HTML- HTTP- Web Forms, MinifiedAndCompressedHtmlPage :


 namespace WebMarkupMin.Example.WebForms { using System; using WebMarkupMin.WebForms.Pages; public partial class Contact : MinifiedAndCompressedHtmlPage { тАж } } 

HTTP- , EnableMinification EnableCompression :


 private void Page_PreLoad(object sender, EventArgs e) { if (IsPostBack) { EnableMinification = false; EnableCompression = false; } } 

HTTP- OutputCache :


 <%@ Page Title="Contact" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Contact.aspx.cs" Inherits="WebMarkupMin.Example.WebForms.Contact" %> <%@ OutputCache CacheProfile="CacheCompressedContent5Minutes" VaryByParam="*" %> тАж 

WebMarkupMin.WebForms -: CompressedMasterPage , MinifiedAndCompressedHtmlMasterPage MinifiedAndCompressedXhtmlMasterPage .


HTML- HTTP- -, MinifiedAndCompressedHtmlMasterPage :


 namespace WebMarkupMin.Example.WebForms { using System; using System.Web.UI; using WebMarkupMin.WebForms.MasterPages; public partial class Site : MinifiedAndCompressedHtmlMasterPage { тАж } } 

, - .



HTML- WebMarkupMin 25-40%. , HTTP- . - , HTML- HTTP- . , , : ( HTTP- ).


HTML- , ASP.NET, . HTML- , CSS- YuiCssMinifier , JS- тАФ MsAjaxJsMinifier .


. 3. HTML- HTTP-

рдкрддрд╛**
рдкреЛрд╕реНрдЯрд░www.afisha.ru162,28110,6431,82%
рдПрдордЯреАрдПрд╕www.mts.ru80,5648,5039,80%
OZONwww.ozon.ru107,3262,2142,03%
Worklewww.workle.ru115,2672,9436,72%

. 4. HTML- HTTP- ( GZIP-)

рдкрддрд╛**
рдкреЛрд╕реНрдЯрд░www.afisha.ru30,0125,4715,14%
рдПрдордЯреАрдПрд╕www.mts.ru19,0814,1525,86%
OZONwww.ozon.ru16,5814,2314,22%
Worklewww.workle.ru19,0617,319,15%

* тАФ , 1 = 1 024


. 3 , HTTP- HTML- 37,59%, .


HTTP- (. 4) . : 4,54 4,93 . , 2 , .


рдЖрдк WebMarkupMin рдСрдирд▓рд╛рдЗрди рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ HTML рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рдХреЗ рдСрдирд▓рд╛рдЗрди рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рдорд╛рдк рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ ред


WebMarkupMin рдкрд░ HTML рдиреНрдпреВрдирддрдо рдХреЗ рдСрдирд▓рд╛рдЗрди рд╕рдВрд╕реНрдХрд░рдг

рдЕрдВрдЬреАрд░ред 2. WebMarkupMin рдСрдирд▓рд╛рдЗрди рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ HTML рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рдХрд╛ рдСрдирд▓рд╛рдЗрди рд╕рдВрд╕реНрдХрд░рдг

рд╕рдВрджрд░реНрдн


  1. WebMarkupMin рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬ рдХреЛрдбрдкреНрд▓реЗрдХреНрд╕ рдкрд░
  2. WebMarkupMin рдСрдирд▓рд╛рдЗрди рд╡реЗрдмрд╕рд╛рдЗрдЯ
  3. рдЖрд░реНрдЯреЗрдорд┐рдпрд╛ рд▓реЗрдмреЗрджреЗрд╡ рдХрд╛ рд▓реЗрдЦ "рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдкреИрд░рд╛рдиреЛрдЗрдпрд╛"
  4. рдЧрд╛рдЗрдб ┬лрдЧреВрдЧрд▓ HTML / CSS рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб рд╕рдореАрдХреНрд╖рд╛┬╗ ( рдЕрдиреБрд╡рд╛рдж )
  5. рдпреВрд░реА рдЬрд╝реИрддрд╕реЗрд╡ рдХрд╛ рд▓реЗрдЦ "рдЕрдиреБрдХреВрд▓рди HTML"

Source: https://habr.com/ru/post/In178081/


All Articles