рдирдорд╕реНрддреЗ! рдореИрдВ рддрд╛рдиреНрдпрд╛рдлрд╝ рдмрд┐рдЬрдиреЗрд╕ рдореЗрдВ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЯреАрдо рдХрд╛ рдиреЗрддрд╛ рд╡рд╛рдиреНрдпрд╛ рд╣реВрдВред
рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рд╢рдЧрд▓ рджреЗрд╡рдЯреВрд▓ рдЯреИрдм рдХреЛ рдЦреЛрд▓рдирд╛ рдФрд░ рдЬрд╛рдБрдЪрдирд╛ рд╣реИ рдХрд┐ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рд╡рдЬрди рдХрд┐рддрдирд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рд╣рдордиреЗ рд╕рд╛рдЗрдЯ рдХреЛрдб рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдПрдХ рджрд┐рди рдореЗрдВ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдлреНрд░рдВрдЯ-рдПрдВрдб рдЯреАрдо рдХреА рдорджрдж рд╕реЗ рдЖрд╡реЗрджрди рдХрд╛ рд╡рдЬрди 30% рдХрдо рдХрд░ рджрд┐рдпрд╛ред рдХреЛрдИ рдЪрд╛рд▓ рдФрд░ рдкрдВрдЬреАрдХрд░рдг рдирд╣реАрдВ - рдХреЗрд╡рд▓ рдирдЧрдиреЗрдХреНрд╕, рдбреЙрдХрдЯрд░ рдФрд░ рдиреЛрдб.рдЬреЗрдПрд╕ (рд╡реИрдХрд▓реНрдкрд┐рдХ)ред

рдХреНрдпреЛрдВ
рдЕрдм рдлреНрд░рдВрдЯ-рдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╣реБрдд рд╡рдЬрди рдХрд░рддреЗ рд╣реИрдВред рдПрдХрддреНрд░рд┐рдд рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рд╡рдЬрди 2-3 рдПрдордмреА, рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рдВрдкреАрдбрд╝рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВред
рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рддрдХ, рд╣рдордиреЗ рдХреЗрд╡рд▓ Gzip рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ 1992 рдореЗрдВ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╕рдВрднрд╡рддрдГ рд╡реЗрдм рдкрд░ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рдВрдкреАрдбрд╝рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИ, рдпрд╣
IE 6 рд╕реЗ рдКрдкрд░ рдХреЗ рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ
редрдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ Gzip рдХрд╛ рд╕рдВрдкреАрдбрд╝рди рд╕реНрддрд░ 1 рд╕реЗ 9 рддрдХ (рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реЛрдирд╛) рд╕реАрдорд╛ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЗрд╕реЗ рдпрд╛ рддреЛ рдлреНрд▓рд╛рдИ рдпрд╛ рд╕реНрдЯреЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдХрдВрдкреНрд░реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- "рдлреНрд▓рд╛рдИ рдкрд░" (рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ) - рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рдмрд╛рдж рдкреНрд░рд╛рдкреНрдд рдлреЙрд░реНрдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдбрд┐рд▓реАрд╡рд░реА рдХреЗ рджреМрд░рд╛рди рдЙрдирдХрд╛ рд╕рдВрдкреАрдбрд╝рди рд╣реЛрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирдЧреНрдиреЗрдХреНрд╕ рд╕реНрддрд░ рдкрд░ред
- рд╕реНрдЯреЗрдЯрд┐рдХ - рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдмрд╛рдж рд╕рдВрдХреБрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ HTTP рд╕рд░реНрд╡рд░ рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ "рдЬреИрд╕рд╛ рд╣реИ" рднреЗрдЬрддрд╛ рд╣реИред
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рд░реНрд╡рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рджреВрд╕рд░рд╛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдФрд░ рдЖрд╡реЗрджрди рдХреА рддреИрдпрд╛рд░реА рдХреЗ рдЪрд░рдг рдореЗрдВ рд╣реИред
рд╣рдорд╛рд░рд╛ рд╕реАрдорд╛рдВрдд рдЪрддреБрд░реНрде рд╕реНрддрд░ рддрдХ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕рдВрдХреБрдЪрд┐рдд рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдПрдХ рд╕рдВрдкреАрдбрд╝рд┐рдд рд╡рд┐рд░реВрдкрдг рд╕рд╛рдХреНрд╖реНрдп рдФрд░ рдореВрд▓ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВрдВрдЧрд╛:
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪреМрдереЗ рд╕реНрддрд░ рдкрд░ рднреА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рдЖрдХрд╛рд░ 4 рдЧреБрдирд╛ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ! рдФрд░ рдЪреМрдереЗ рд╕реНрддрд░ рдФрд░ рдиреМрд╡реЗрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ 35 Kb рд╣реИ, рдЬреЛ рдХрд┐ рдореВрд▓ рдХрд╛ 1.3% рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдкреАрдбрд╝рди рд╕рдордп 2 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реИред
рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╣рдордиреЗ рд╕реЛрдЪрд╛: рдмреНрд░реЗрдЯрд▓реА рдкрд░ рд╕реНрд╡рд┐рдЪ рдХреНрдпреЛрдВ рдирд╣реАрдВ? рд╣рд╛рдБ, рдФрд░ рд╕рдВрдкреАрдбрд╝рди рдХреЗ рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕реНрддрд░ рдкрд░!
рд╡реИрд╕реЗ, рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рджрдо 2015 рдореЗрдВ Google рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕рдореЗрдВ 11 рд╕рдВрдкреАрдбрд╝рди рд╕реНрддрд░ рд╣реИрдВред рд╡рд╣реАрдВ, рдмреНрд░реЗрдЯрд▓реА рдХрд╛ рдЪреМрдерд╛ рд╕реНрддрд░ рдЧрдЬрд╝рд┐рдк рдореЗрдВ рдиреМрд╡реЗрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рд╣реИред рдореИрдВ рдкреНрд░реЗрд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдмреНрд░реЗрдЯрд▓реА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд╛рде рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдлреЗрдВрдХ рджрд┐рдпрд╛ред рдкрд░рд┐рдгрд╛рдо рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рд╣реИрдВ:
рд╣рд╛рд▓рд╛рдВрдХрд┐, рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдмреНрд░реЗрдЯрд▓реА рд╕рдВрдкреАрдбрд╝рди рд╕реНрддрд░ рднреА Gzip рдореЗрдВ рдиреМрд╡реЗрдВ рд╕реНрддрд░ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрддрд╛ рд╣реИред рдФрд░ рдЕрдВрддрд┐рдо рд╕реНрддрд░ - 8.3 рд╕реЗрдХрдВрдб рдЬрд┐рддрдирд╛! рдЗрд╕рдиреЗ рдореБрдЭреЗ рд╕рддрд░реНрдХ рдХрд░ рджрд┐рдпрд╛ред
рджреВрд╕рд░реА рдУрд░, рдкрд░рд┐рдгрд╛рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИред рдЕрдЧрд▓рд╛, рдореИрдВрдиреЗ nginx рдХреЛ рдХрдВрдкреНрд░реЗрд╢рди рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА -
рдкреНрд░рд▓реЗрдЦрди ред рд╕рдм рдХреБрдЫ рдмреЗрд╣рдж рд╕рд░рд▓ рдирд┐рдХрд▓рд╛:
brotli on; brotli_comp_level 11; brotli_types text/plain text/css application/javascript;
рдЙрдиреНрд╣реЛрдВрдиреЗ рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛, рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдФрд░ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реБрдП:

рдореЗрд░реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдбрд╛рдЙрдирд▓реЛрдб рд╕рдордп рджрд╕ рдЧреБрдирд╛ рдмрдврд╝ рдЧрдпрд╛ - 100 рдПрдордПрд╕ рд╕реЗ 5 рд╕реЗрдХрдВрдб рддрдХ! рдЖрд╡реЗрджрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдЖрдк рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд▓рд┐рдЦреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЙрд╕реА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдХреБрдЪрд┐рдд рдХрд┐рдпрд╛, рдЗрд╕реЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд░рдЦрд╛, рдФрд░ рдЗрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ред рдбрд╛рдЙрдирд▓реЛрдб рдмрд╛рд░ рд╡рд╛рдкрд╕ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдЬреАрдд! рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдмрд╣реБрдд рдЬрд▓реНрджрдмрд╛рдЬреА рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдкреАрдбрд╝рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХрд╛ рдЕрдиреБрдкрд╛рдд
рд▓рдЧрднрдЧ 80% рд╣реИ ред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдмрдХрд┐ рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдк Gzip рдХреЗ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рд╕реНрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рддреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕рдВрдкреАрдбрд╝рди рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ "рдЬреИрдХрд▓" рдирд╛рдо рдорд┐рд▓рд╛ред

рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП?
Nginx, Docker рдФрд░ Node.js, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ bash рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Nginx рдХреЗ рд╕рд╛рде, рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ:
brotli off; brotli_static on; gzip_static on;
рд▓реЗрдХрд┐рди рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЕрднреА рддрдХ рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВ? рд╕рд╣реА, рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдЬреЛрдбрд╝реЗрдВ:
gzip on; gzip_level 4; gzip_types text/plain text/css application/javascript;
рдореИрдВ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реВрдВрдЧрд╛:
рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдкрд░, рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрд╡реАрдХрд╛рд░-рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╣реЗрдбрд░ рднреЗрдЬрддрд╛ рд╣реИ, рдЬреЛ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рд╕рдорд░реНрдерд┐рдд рд╕рдВрдкреАрдбрд╝рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдЕрдкрд╕реНрдлреАрддрд┐, рдЧрдЬрд╝рд┐рдк, рдмреНрд░ред
рдпрджрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкрд╛рд╕ рдмреНрд░ рдореЗрдВ рд▓рд╛рдЗрди рд╣реИ, рддреЛ nginx рдПрдХреНрд╕рдЯреЗрдВрд╢рди .br рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдРрд╕реА рдХреЛрдИ рдлрд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ Gzip рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ .gz рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдРрд╕реА рдХреЛрдИ рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпрд╣ "рдордХреНрдЦреА рдкрд░" рд╣рд┐рд▓ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдЪреМрдереЗ рд╕реНрддрд░ рдХреЗ рд╕рдВрдкреАрдбрд╝рди рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рджреЗ рджреЗрдЧрд╛ред
рдпрджрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдкреАрдбрд╝рди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рд░реНрд╡рд░ рдЕрдкрдиреЗ рдореВрд▓ рд░реВрдк рдореЗрдВ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдЬрд╛рд░реА рдХрд░реЗрдЧрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИ: рд╣рдорд╛рд░реА рдирдЧрдиреЗрдХреНрд╕ рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдмреНрд░реЗрдЯрд▓реА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ
рддреИрдпрд╛рд░ рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рд▓реАред
рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ "рдкреИрдХрд┐рдВрдЧ" рдирдЧреНрдиреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ FROM fholzer/nginx-brotli # RUN rm -rf /usr/share/nginx/html/ # COPY app/nginx /etc/nginx/conf.d/ # COPY dist/ /usr/share/nginx/html/ # CMD nginx -c /etc/nginx/conf.d/nginx.conf
рд╣рдордиреЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рд╕рдВрддреБрд▓рди рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛, рд▓реЗрдХрд┐рди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдХрд╣рд╛рдБ рд╕реЗ рд▓рд╛рдпрд╛ рдЬрд╛рдП? рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдЬреИрдХрд╛рд▓ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред
рдж рдЬреИрдХрд▓
рдпрд╣ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ ред
рдЕрдм рдпреЗ рддреАрди рдиреЛрдб.рдЬреЗрдПрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ рдЬреЛ рдиреЛрдб рдХреЗ рд╕рд╛рде рдбреЙрдХ рдЗрдореЗрдЬ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рд╣реБрдП рд╣реИрдВ: рдЕрд▓реНрдкрд╛рдЗрдиред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
рдЖрдзрд╛рд░-рдХрдВрдкреНрд░реЗрд╕рд░ - рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ рдореВрд▓ рд╕рдВрдкреАрдбрд╝рди рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИред
рдЗрдирдкреБрдЯ рддрд░реНрдХ:
- рд╕рдВрдкреАрдбрд╝рди рдлрд╝рдВрдХреНрд╢рди - рдХреЛрдИ рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди, рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрдкреАрдбрд╝рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рд╕рдВрдкреАрдбрд╝рди рдкреИрд░рд╛рдореАрдЯрд░ - рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБред
- рд╡рд┐рд╕реНрддрд╛рд░ - рд╕рдВрдкреАрдбрд╝рди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ред рдПрдХ рдкреАрд░рд┐рдпрдб рдХреИрд░реЗрдХреНрдЯрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
gzip.js - рдЬреАрдЬрд╝рд┐рдк рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдмреЗрд╕-рдХрдВрдкреНрд░реЗрд╕рд░ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓
zlib рдкреИрдХреЗрдЬ рд╕реЗ рдкрд╛рд░рд┐рдд рд╣реБрдИ рдФрд░ рд╕рдВрдкреАрдбрд╝рди рдХреЗ рдиреМрд╡реЗрдВ рд╕реНрддрд░ рдХрд╛ рд╕рдВрдХреЗрдд рд╣реИред
Brotli.js - рдПрдХ рдмреЗрд╕-рдХрдВрдкреНрд░реЗрд╕рд░ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдмреНрд░реЗрдЯрд▓реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓
рдЙрд╕реА npm рдкреИрдХреЗрдЬ рд╕реЗ рдкрд╛рд░рд┐рдд рд╣реБрдИ рдФрд░ рд╕рдВрдкреАрдбрд╝рди рдХреЗ 11 рд╡реЗрдВ рд╕реНрддрд░ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреА рд╣реИред
рдЬреИрдХрд▓ рдЫрд╡рд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ FROM node:8.12.0-alpine # COPY scripts scripts # package.json package-lock.json COPY package*.json scripts/ # WORKDIR scripts # # node_modules/ # , RUN npm ci # CMD node gzip.js | node brotli.js
рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрдм рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
docker run \ -v $(pwd)/dist:/scripts/dist \ -e 'dirs=["dist/"]' \ -i mngame/shakal
- -v $ (pwd) / dist: / script / dist - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдХреМрди рд╕реА рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (рдорд╛рдЙрдВрдЯ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
- -e 'dirs = ["dist /"] - рдкрд░реНрдпрд╛рд╡рд░рдг рдкреИрд░рд╛рдореАрдЯрд░ dirs рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ - рдПрдХ рдРрд╕реА рд▓рд╛рдЗрди рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ / рдЬреЛ рдХрд┐ рд╕рдВрдкреАрдбрд╝рд┐рдд рд╣реЛрдЧреАред
- -i mngame / shakal - docker.io рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ред
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрди: рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди .js, .json, .html, .css рдХреЗ рд╕рд╛рде рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░рддреА рд╣реИ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди .br рдФрд░ .gz рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╣реЗрдЬрддреА рд╣реИред рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░, 6 рдПрдордмреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЗ рд╡рдЬрди рдХреЗ рд╕рд╛рде рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд▓рдЧрднрдЧ рджреЛ рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВред
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдФрд░ рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рднреА, рдЖрдкрдиреЗ рд╕реЛрдЪрд╛ рд╣реЛрдЧрд╛: тАЬрдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реЛ? рдХреМрди рд╕рд╛ рдиреЛрдб? рдХреНрдпреЛрдВ рди рд╕рд┐рд░реНрдл рдЕрдкрдиреЗ рдЖрдк рдХреЛ рджреЛ рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝реЗрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдФрд░ рд╕реАрдзреЗ рдкреЛрд╕реНрдЯ-рдХреЙрд▓ рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВ? "
рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рджреЗрдЦрдирд╛ рдмрд╣реБрдд рджрд░реНрджрдирд╛рдХ рд╣реИ, рдЬрдм рд╕реАрдЖрдИ рдореЗрдВ рд▓рд┐рдВрдЯрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдП 100+ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрд╕реЗ рд▓рд╛рдЗрдирд┐рдВрдЧ рд╕реНрдЯреЗрдЬ рдкрд░ рдЕрдзрд┐рдХрддрдо 10 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдПрдЬреЗрдВрдЯ рдХрд╛ рд╕рдордп, рдЖрдкрдХрд╛ рд╕рдордп, рдЖрдЦрд┐рд░рдХрд╛рд░, рдмрд╛рдЬрд╛рд░ рдХрд╛ рд╕рдордп рд╣реИред
рдХрд░реНрддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ рдкреВрд░реНрд╡-рдЗрдХрдЯреНрдареА рдЫрд╡рд┐ рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдкреАрдбрд╝рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдм рдХреБрдЫ рднреА рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рд╕рдВрдкреАрдбрд╝рд┐рдд рди рдХрд░реЗрдВред рдПрдХ рд▓рд┐рдВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЪрд▓рд╛рдПрдВ, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВ рдЪрд▓рд╛рдПрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдЬреИрдХрд▓ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрд╕реНрдХрд░рдг рдорд┐рд▓рддрд╛ рд╣реИ: рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдмрд╕ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд░реЗрдВ, рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдирд╡реАрдирддрдо рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдкрд░рд┐рдгрд╛рдо:
- рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рдЖрдХрд╛рд░ 636 Kb рд╕реЗ рдмрджрд▓рдХрд░ 446 Kb рд╣реЛ рдЧрдпрд╛ рд╣реИред
- рдкреНрд░рддрд┐рд╢рдд рдХрд╛ рдЖрдХрд╛рд░ 30% рддрдХ рдХрдо рд╣реЛ рдЧрдпрд╛ред
- рдбрд╛рдЙрдирд▓реЛрдб рдХрд╛ рд╕рдордп 10-12% рдХрдо рд╣реЛ рдЧрдпрд╛ред
- рд▓реЗрдЦ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдШрдЯрди рдХрд╛ рд╕рдордп рд╕рдорд╛рди рд░рд╣рддрд╛ рд╣реИред
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░
рдЖрдк рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрднреА, рдЕрдЧрд▓реЗ PR рджреНрд╡рд╛рд░рд╛ рд╕рд╣реА рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдмрд╛рдж рдПрдХ рдХрджрдо рдЬреЛрдбрд╝реЗрдВ - "рдЬреИрдХрд▓" рд╕рдВрдкреАрдбрд╝рди, рдФрд░ рдлрд┐рд░ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░реЗрдВред рдЖрдзреЗ рдШрдВрдЯреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдордиреЗ рдлреНрд░рдВрдЯ-рдПрдВрдб рдХреЗ рд╡рдЬрди рдХреЛ 30% рддрдХ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ - рдЖрдк рд╕рдлрд▓ рд╣реЛрдВрдЧреЗ! рд╕рднреА рдЖрд╕рд╛рди рд╕рд╛рдЗрдЯреЗрдВред
ssylochki: