рдХреНрд░реЛрдо рдСрдбрд┐рдЯ 500: рднрд╛рдЧ 1. рд▓реИрдВрдбрд┐рдВрдЧ

Chrome рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдореЗрдВ рдСрдбрд┐рдЯ рдЯреИрдм рд╣реИред рдЗрд╕ рдкрд░ рд▓рд╛рдЗрдЯрд╣рд╛рдЙрд╕ рдирд╛рдордХ рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ, рдЬреЛ рдпрд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рдмрдирд╛ рд╣реИред

рдЫрд╡рд┐

рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдЖрд╡реЗрджрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рднрдпрднреАрдд рдерд╛ред рдХрдИ рдЦрдВрдбреЛрдВ рдореЗрдВ, рдореВрд▓реНрдпрд╛рдВрдХрди рд▓рд╛рд▓ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдерд╛ред рдореИрдВрдиреЗ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдХрд┐ рдореЗрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рдерд╛ред рдФрд░ рдореБрдЭреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕реВрдЪреА рдорд┐рд▓реА, рдЙрдиреНрд╣реЗрдВ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдФрд░ 500 рдЕрдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдПред рдирддреАрдЬрддрди, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдЪрд▓рдиреЗ рд▓рдЧрд╛, рдФрд░ рдореИрдВрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ред рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдорд╛рдзрд╛рди рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдореИрдВ рдЖрдпрд╛ рд╣реВрдВред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрд░реЛрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк npm рд╕реЗ рд▓рд╛рдЗрдЯрд╣рд╛рдЙрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рддреБрд▓рдирд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЦрдВрдб рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВрдиреЗ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЛ рдЙрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬреЛ рдореИрдВрдиреЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдереЗ рдФрд░ рдЬреЛ рд▓рд┐рдЧреНрдерд╣рд╛рдЙрд╕ рдХреЛ рдкрд╕рдВрдж рдереЗред рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рд╢реЗрд╖ рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИрдВ, рдФрд░ рдЬреИрд╕реЗ рдХрд┐ рдПрд╕рдИрдУ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╕рднреА рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИред

рдкреНрд░рджрд░реНрд╢рди


рд╕рд░реНрд╡рд░ рдХрд╛ рдЪрдпрди


рдпрд╣ рд╕рдмрд╕реЗ рдЖрдо рд╕рд▓рд╛рд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рд╕рднреА рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдиреАрдВрд╡ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдирд╛ рд╕рд░рд▓ рд╣реИ, рдпрд╣ рдХрд┐рд╕реА рднреА рдЯрд┐рдпрд░ 3 рдпрд╛ рдЯрд┐рдпрд░ 4 рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░ рд╣реИред рдпрд╣ рд╕реНрдерд┐рддрд┐ рд╕реНрд╡рдпрдВ рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд╣рддреА рд╣реИ, рдпрд╣ рдХрд╣рддреА рд╣реИ рдХрд┐ рдорд╛рд▓рд┐рдХреЛрдВ рдиреЗ рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрд╛ред

рдЖрд╡реЗрджрди рдЖрд░рдВрднреАрдХрд░рдг


рдПрдХ рдмрд╛рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ html рдерд╛ред рдлрд┐рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдЖрдпрд╛ред рдЖрдЬ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЗрддрдирд╛ рддрд░реНрдХ рд╣реИ рдХрд┐ html рдЗрд╕рд╕реЗ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди, рдХреНрдпреЛрдВрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╣рдореЗрдВ рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП html рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдЯреБрдХрдбрд╝рд╛ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рдЖрджрд░реНрд╢ рд░реВрдк рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

<!DOCTYPE html> <html lang="ru"> <head> <title> </title> <link rel="manifest" href="./manifest.webmanifest"> <link rel="shortcut icon" href="content/images/favicon.ico" type="image/x-icon"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" charset="utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width" /> <meta name="theme-color" content="#425566"> <meta name="Description" content=" "> </head> <body> <div id="loader"> loading </div> <script async> // todo:     </script> </body> </html> 

рдЗрд╕рдореЗрдВ рдХреЛрдИ рднреА рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдХреЗрд╡рд▓ рдЖрд╡реЗрджрди рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб, рдЬреЛ рдЖрд╡реЗрджрди рдХреЛ рд╕реНрд╡рдпрдВ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд▓реЛрдб рдХрд░реЗрдЧрд╛ред

рдпрд╣ рд▓реЗрдЦ рдмреЙрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмреЙрдЯ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдмреЙрдЯ рдХреА рдЬрд░реВрд░рдд рд╣реИред Google рдмреЙрдЯ рд╕реНрд╡рдпрдВ рдЙрд╕ рд╕рд╛рдордЧреНрд░реА рд╕реЗ рд╕рдм рдХреБрдЫ рд╕рдордЭ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдмрд╛рдж рдореЗрдВ рд▓реЛрдб рдХреА рдЬрд╛рдПрдЧреАред

рдЫрдк рд╕реНрдХреНрд░реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рд╣рдо рд╕рднреА рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рд╕реНрдХреНрд░реАрди рдХреЛ рд╕реНрдкрд▓реИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рднреА, рд▓реЗрдХрд┐рди рдХреБрдЫ рд▓реЛрдЧ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕реНрдкреНрд▓реИрд╢ рд╕реНрдХреНрд░реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдо рд▓реЛрдбрд░ рдмреНрд▓реЙрдХ рдореЗрдВ рд░рдЦреЗрдВрдЧреЗ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦреБрдж рдХреЛ рд▓реЛрдб рди рдХрд░рддреЗ рд╣реБрдП рдКрдм рди рдЬрд╛рдПред

рдПрдХ рдЫрдк рд╕реНрдХреНрд░реАрди рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рд╕реАрдПрд╕рдПрд╕ рдПрдиреАрдореЗрд╢рди рдпрд╛ рд╕рд┐рд░реНрдл рдПрдХ рддрд╕реНрд╡реАрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореЛрдмрд╛рдЗрд▓ рдлреЛрди рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХрдорд╛рддреНрд░ рд╢рд░реНрдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╣рд▓реНрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЫрд╡рд┐

рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ? рдзреАрдореЗ рдЗрдВрдЯрд░рдиреЗрдЯ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддреБрд░рдВрдд рд╕рд╛рдЗрдЯ рд╕реЗ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рд╡реЗ рд╕рдлреЗрдж рд╕реНрдХреНрд░реАрди рдХреА рдкреНрд░рд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЖрд╢реНрдЪрд░реНрдп рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╕рд╛рдЗрдЯ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ рдпрд╛ рдирд╣реАрдВред рддреЗрдЬ рдЗрдВрдЯрд░рдиреЗрдЯ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдпрд╣ рднреА рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдЗрдВрдЯрд░рдиреЗрдЯ рдореЗрдВ рднреА рдЕрдВрддрд░рд╛рд▓ рд╣реИред

рд╕реНрдкреНрд▓реИрд╢ рд╕реНрдХреНрд░реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдбреЙрдХрд╕реНрдЯреЗрд╢рди рд╕рд╛рдЗрдЯ рджреЗрддрд╛ рд╣реВрдВ , рдЬрд╣рд╛рдВ рдПрдХ рдЕрдЪреНрдЫреА рд▓рд╣рд░ рд╕рд╛рдЗрдЯ рдХреЗ рдмрд╣реБрдд рд▓рдВрдмреЗ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╕рдЬрд╛рддреА рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╣реИ рдХрд┐ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЛ рдХреИрд╕реЗ рджреЗрдЦреЗрдВрдЧреЗред

рдФрд░ рддреБрд░рдВрдд рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреНрд░реАрди рдХреЛ рдЫрдкрдХрд░ рдкреНрд░рдХрд╛рд╢рд╕реНрддрдВрдн рдХреЛ рдзреЛрдЦрд╛ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдПрдХ рднрд╛рд░реА рдЖрд╡реЗрджрди рд░рдЦ рд╕рдХрддрд╛ рд╣реИред рд╡рд╣ рд╕рдм рдХреБрдЫ рджреЗрдЦрддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рднрд╛рд░реА рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдирд┐рд╢рд╛рди рдирд╣реАрдВ рджреЗрдЧрд╛ред

рдЖрд╡реЗрджрди рдЖрд░рдВрднреАрдХрд░рдг


рдЕрдм рдЬрдм рд╣рдо рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдзреНрдпрд╛рди рднрдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд╛рд▓реЗрдВред

 // 1.  ServiceWorker,     PWA if (navigator.serviceWorker && !navigator.serviceWorker.controller) { navigator.serviceWorker.register('pwabuider-sw.js', { scope: './' }); } // 2.    [ "./content/font.css", "./content/grid.css" ].forEach(function(url){ var style = document.createElement("link"); style.href = url; style.rel = "stylesheet"; document.head.appendChild(style); }); // 3.    [ "./scripts/polyfills.min.js", //  vendors.min.js "./scripts/main.min.js" // spa  ].forEach(function(url){ const script = document.createElement("script"); script.src = url; script.async = false; document.head.appendChild(script); }); 

рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ:

  1. PWA рдХрдиреЗрдХреНрд╢рди - рд╣рдо рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдЖрдкрдХреЛ рдЗрд╕реЗ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╕рд╛рдЗрдЯ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pwa рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдм рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред
  2. рдХрдиреЗрдХреНрдЯ рд╢реИрд▓рд┐рдпреЛрдВ - рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ ред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдпрд╣ рдХреЛрдб рдмрд┐рд▓реНрдХреБрд▓ рднреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЖрдкрдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред
  3. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ - рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рдЗрд╕рдореЗрдВ рдЗрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рджреЛ рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд╛рд╡реЗрд╢ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдп рд╕рднреА рд▓рд┐рдкрд┐рдпрд╛рдБ (рдорд╛рдирдЪрд┐рддреНрд░, рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдкреБрд╕реНрддрдХрд╛рд▓рдп) рдЬреЛ рдкрд╣рд▓реА рд╕реНрдХреНрд░реАрди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ (рдкреВрд░реЗ рдкреГрд╖реНрда рдХреЛ рдирд╣реАрдВ) рдЖрд╡реЗрджрди рдХреА рдкрд╣рд▓реА рд╕реНрдХреНрд░реАрди рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж рд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдШрдЯрдХ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдЗрд╕рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧреА, рдФрд░ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕реНрдХреИрди рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдХрд╛рд░реНрдб рдХреЛ рд╡рд┐рд╕рд░реНрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╡реЗ рд╕реНрдХреНрд░реАрди рдХреЛ рд╣рд┐рдЯ рдХрд░рддреЗ рд╣реИрдВред рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде, рдЗрд╕реА рддрд░рд╣ред

рдирддреАрдЬрддрди, рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдкрд╛рджрди рдорд┐рд▓рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдЦреЛрдЬ рдмреЙрдЯ рдЧрддрд┐ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВ, рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдкрд░ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдкреНрд░рддрд┐рдкрд╛рджрди


рдПрдХ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреИрд░рд╛рдореАрдЯрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкрд╣рд▓реА рд╕реНрдХреНрд░реАрди рдХрд┐рддрдиреА рдЬрд▓реНрджреА рдЦреАрдВрдЪреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рдкреГрд╖реНрда рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдБ рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ:

1. рдЖрд▓рд╕реА рдкреНрд░рддрд┐рдкрд╛рджрдиред рдпрд╣ рдХреЗрд╡рд▓ рдЙрд╕ рдкреГрд╖реНрда рдХреЗ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ, рдФрд░ рднрд╛рд░реА рдШрдЯрдХреЛрдВ рдпрд╛ рдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрдирдХреЗ рдкрд╛рд╕ рдХреВрдж рдЧрдпрд╛ рд╣реЛред

рдпрд╣рд╛рдБ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЖрд▓рд╕реА-рдмреНрд▓реЙрдХ рдФрд░ рдЖрд▓рд╕реА-рдПрдПрдордЬреА рдШрдЯрдХ:

 <div> <p></p> <lazy-img src="..."/> </div> <lazy-block>   </lazy-block> <lazy-block>   </lazy-block> <lazy-block>   </lazy-block> 

рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВрдЧреЗ рдФрд░ рдпрджрд┐ рдШрдЯрдХ рд╕реНрдХреНрд░реАрди рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЖрддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рдЦреАрдВрдЪрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреА рддреБрд▓рдирд╛ рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ ( рдЙрджрд╛рд╣рд░рдг ) рдХреА рддрдХрдиреАрдХ рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдЬреЛ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рджреАрд╡рд╛рд░реЛрдВ рдкрд░ рд╕рднреА рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИред рд╣рдо рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдХрднреА рдзреАрдорд╛ рдирд╣реАрдВ рд╣реЛрддреЗред

рд▓реЗрдХрд┐рди Google bot рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓реЛ, рдЬреЛ рд╕реНрдкрд╛ рджреЗрдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реЗ рдкреГрд╖реНрда рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдзреНрдпрд╛рди рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣ рдЖрдкрдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд╣реАрдВ рджреЗрдЦреЗрдЧрд╛ред

2. рдпрджрд┐ рдХреЛрдИ рднреА рдШрдЯрдХ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╕реНрд╡рдпрдВ рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдирдХреНрд╢реЗ, рдЪрд╛рд░реНрдЯ рдпрд╛ 3 рдбреА рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдмреНрд▓реЙрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ, JS рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ:

 class Demo { constructor() { this.init(); } private async init() { const module = await import('./external.mjs'); //   module.default(); module.doStuff(); } } 

рдирддреАрдЬрддрди, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗрд╡рд▓ рд╡рд╣реА рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реЗ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рд╕рд░реНрд╡рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрд╣реБрдд рдмрдЪрд╛рддрд╛ рд╣реИред

рдмрдВрдб рдиреНрдпреВрдирддрдо


рдФрд░ ... рд╣рд╛рдБ, рдЖрдкрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛, рдпрд╣ Terser (UglifyJS) рдореЗрдВ рдЦрдирди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЗрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВ, рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдирдпрд╛ рдПрдкреАрдЖрдИ рд╣реИ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╡реЗ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░реНрд╕ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдЙрдарддреА рд╣реИ рдХрд┐ рдирд╡реАрдирддрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдЬреЛ рд▓рдЧрднрдЧ 80% рд╣реИрдВ, рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ IE11 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЯреНрд░рд╛рдВрд╕рдкреЗрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреЙрд▓реАрдлрд╝рд╛рдЗрд▓реНрд╕ рдХреЗ рд╕рд╛рдеред

рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд╛рда рд╣реИрдВ, рдФрд░ рдЗрд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдореВрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 3 рдЧреБрдирд╛ рдХрдо (рдореЗрд░реЗ рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рдЕрдиреБрдорд╛рди рдХреЗ рдЕрдиреБрд╕рд╛рд░) рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рдмрдВрдбрд▓ рдмрдирд╛рдирд╛ рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИред Chrome 73 рдХреЗ рд▓рд┐рдП ES2017 рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдмрдВрдбрд▓ рдиреНрдпреВрдирддрдо рдкреЙрд▓реАрдлрд╝рд╛рдЗрд▓реНрд╕ рдХреЗ рд╕рд╛рде, рдПрдХ рдмрдВрдбрд▓ рдЬреЛ ES11 рдХреЗ рд╕рд╛рде IE11 рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдкреЙрд▓реАрдлрд╝рд╛рдЗрд▓реНрд╕ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ, рдЖрджрд┐ред

рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмрдВрдбрд▓реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрдиреЗрдХреНрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 var esVersion = ".es2017"; try{ eval('"use strict"; class foo {}'); }catch(e){ esVersion = ".es5"; } [ "./scripts/polyfills" + esVersion + ".min.js", "./scripts/main" + esVersion + ".min.js" ].forEach(function(url){ const script = document.createElement("script"); script.src = url; script.async = false; document.head.appendChild(script); }); 

рдирддреАрдЬрддрди, рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдмрд╕реЗ рд╣рд▓реНрдХрд╛ рдФрд░ рдЙрддреНрдкрд╛рджрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛, рдФрд░ IE11 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡рд╣ рдорд┐рд▓реЗрдЧрд╛ рдЬреЛ рдЙрдирдХреЗ рдпреЛрдЧреНрдп рд╣реИрдВред

рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рддрд░реАрдХрд╛
50% рд╕реЗ рдмрдВрдбрд▓реЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рдкреБрд╕реНрддрдХрд╛рд▓рдп , рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рдеред

рдХреЛрдб рдиреНрдпреВрдирддрдо


рдПрдХ рдмрд╣реБрдд рд╣реА рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрдм рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреА рдЖрдВрдЦреЛрдВ рдкрд░ рдкрдбрд╝рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рдХрднреА-рдХрднреА рдЖрдк рдРрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рд╡рдЬрди 5-15 рдПрдордмреА рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдкрд╕рдВрдж рдХреЛ рдмреБрджреНрдзрд┐рдорд╛рдиреА рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдВрдЧреБрд▓рд░ рдпрд╛ рд░рд┐рдПрдХреНрдЯ рдЬреИрд╕реЗ рднрд╛рд░реА рдврд╛рдВрдЪреЗ рдХреЗ рдмрдЬрд╛рдп, рдЙрдирдХреЗ рдЕрдзрд┐рдХ рд╣рд▓реНрдХреЗ рд╕рдордХрдХреНрд╖реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ: рд╡рд╛рдЙ, рдкреНрд░реЙрдкрдХреНрдЯ, рдорд┐рдереНрд░рд┐рд▓, рдЖрджрд┐ред рд╡реЗ рдЕрдкрдиреЗ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╕рдордХрдХреНрд╖реЛрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХрдорддрд░ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрдВрдбрд▓ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдмрдЪрдд рдХрдИ рдмрд╛рд░ рд╣реЛ рд╕рдХрддреА рд╣реИред

рднрд╛рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрдЪреЗрдВред рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдЬреИрд╕реЗ рдХрд┐ jquery, lodash, рдХреНрд╖рдг, rxjs рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ minified рдЖрдХрд╛рд░> 100kb рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЕрдзрд┐рдХ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдФрд░ рджреЗрд╢реА JS рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдПрдХ рдореВрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд╕рд░рд▓ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдЕрдирд╛рд╡рд╢реНрдпрдХ рднрд╛рд░реА рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЫрд╡рд┐ рдХрд╛ рдЫреЛрдЯрд╛рдХрд░рдг


рд╕рдВрднрд╡рддрдГ рд╕рднреА рдлреНрд░рдВрдЯ-рдПрдВрдб рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╡реЗрдмрдк рдЫрд╡рд┐ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рднреА рдЖрд╡рд╢реНрдпрдХ рдбрд┐рд╕реНрдкреНрд▓реЗ рд╕рд╛рдЗрдЬ рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рд▓рдЧрднрдЧ рд╕рднреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рд▓реЛрдЧ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрддреЗ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдпрд╣рд╛рдВ рдореИрдВ рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдиреБрд╕реНрдЦрд╛ рджреВрдВрдЧрд╛ред рдпрд╣ рдиреБрд╕реНрдЦрд╛ рддреАрд╡реНрд░ рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рд░реВрдкрд╛рдВрддрд░рдг рдЙрдкрдХрд░рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ ред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд┐рдЪрд╛рд░рд╢реАрд▓ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдЦрдбрд╝рд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЧрддрд┐ рдПрдирд╛рд▓реЙрдЧреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 30-40 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реИред рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдФрд░ рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рд╡рд┐рд╢рд╛рд▓ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рд╕реИрдХрдбрд╝реЛрдВ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕рдордп рдПрдХ рдЖрдзреБрдирд┐рдХ рджреГрд╢реНрдпрдкрдЯрд▓ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЧрддрд┐ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред

Sharp рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреНрд▓реЛрдм рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рд╕реНрд░реЛрдд рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреА рдкреБрди: рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рд╕реНрд╡рдпрдВ рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЧреБрдкреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕реЗ рдЫрд┐рдкрд╛рддрд╛ рд╣реВрдВред рдореЗрд░реА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 gulp.task('core-min-images', async () => { const fs = require('fs'); const path = require('path'); const glob = require('glob'); const sharp = require('sharp'); // 1.          glob const files = await new Promise((resolve, reject) => { glob('src/content/**/*.{jpeg,jpg,png}', {}, async (er, files) => { !er ? resolve(files) : reject(er); }); }); // 2.      let completed = 1; await Promise.all(files.map(async (file) => { const outFile = file.replace(/^src/, 'www'); const outDir = path.dirname(outFile); // 2.1.       if (!fs.existsSync(outDir)) { fs.mkdirSync(outDir, { recursive: true }); } // 2.2.    const origin = sharp(file); // 2.3.     1920     //       jpg/png  webp    (80%) const size1920 = origin.resize({ width: 1920 }); await size1920.toFile(outFile.replace(/\.(jpeg|jpg|png)$/, '-1920w.$1')); await size1920.toFile(outFile.replace(/\.(jpeg|jpg|png)$/, '-1920w.webp')); // 2.4.    480   const size480 = origin.resize({ width: 480 }); await size480.toFile(outFile.replace(/\.(jpeg|jpg|png)$/, '-480w.$1')); await size480.toFile(outFile.replace(/\.(jpeg|jpg|png)$/, '-480w.webp')); // 2.5.    120   const size120 = origin.resize({ width: 120 }); await size120.toFile(outFile.replace(/\.(jpeg|jpg|png)$/, '-120w.$1')); await size120.toFile(outFile.replace(/\.(jpeg|jpg|png)$/, '-120w.webp')); // 2.6.      console.log(`Complete image ${completed++} of ${files.length}:`, file); })); }); 

рдирддреАрдЬрддрди, рд╣рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдЫрд╡рд┐рдпрд╛рдВ рдФрд░ рд╡рд┐рд╢рд╛рд▓ рдЖрдХрд╛рд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд░реЛрдд рдЫрд╡рд┐ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдорд┐рд▓рддреЗ рд╣реИрдВред рдЕрдм рд╣рдореЗрдВ рдпрд╣ рд╕реАрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣рд╛рдБ рднреА, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рдЕрдЧрд░ рдкрд╣рд▓реЗ рд╣рдордиреЗ рдРрд╕рд╛ рд▓рд┐рдЦрд╛ рдерд╛:

 <img src="sample.jpg"/> 

рдЕрдм рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 <picture> <source srcset="img/sample-480w.webp" type="image/webp"> <source srcset="img/sample-480w.jpg" type="image/jpeg"> <img src="img/sample-480w.jpg" alt=" !"> </picture> 

рдФрд░ рдлрд┐рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрд╡рдпрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЪрдпрди рдХрд░реЗрдЧрд╛ред рдЖрдк рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЙрддреНрддрд░рджрд╛рдпреА рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

 <picture> <source srcset="img/sample-480w.webp, img/sample-960w.webp 2x" type="image/webp"> <source srcset="img/sample-480w.jpg, img/sample-960w.webp 2x" type="image/jpeg"> <img src="img/sample-480w.jpg" alt=" !"> </picture> 

рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рдЕрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрд╕реЗрдВрдмрд▓реА рдЪрд░рдг рдореЗрдВ рдЪрд┐рддреНрд░ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдФрд░ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╣реА рд╕реЗрдЯ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рддрд░реНрдХ рдХреЛ рдПрдХрдЬреБрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХреБрдЫ рдШрдЯрдХ рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╣реА <lazy-img src="img/sample.jpg">

рд╕реНрдЯрд╛рдЗрд▓ рдорд┐рдирд┐рдореЗрд╢рди


рдХреЗрд╡рд▓ рдЙрди рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдЬреЛ рдЖрдкрдХреЗ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЬрдм рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдШрдЯрдХреЛрдВ рд╕реЗ рдмрд╛рдВрдзрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдШрд░ рдореЗрдВ рдХреЗрд╡рд▓ рддрдм рд╣реА рдПрдореНрдмреЗрдбреЗрдб рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдШрдЯрдХ рд╕реНрд╡рдпрдВ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдиреНрдпреВрдирддрдо рдХрд░реЗрдВред рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рдпрд╛ рдмреАрдИрдПрдо рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рд░рд╛рд╕рд░ рд▓рдВрдмрд╛рдИ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдмреБрд░рд╛ рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓рддреА рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдпрд╣ рдРрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реИ рдЬреЛ рдЕрджреНрд╡рд┐рддреАрдп рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ: рдЬреЗрдПрд╕рдПрд╕, рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХ, рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓ред

рдШрд░ рдкрд░ рдХрдо рд╕реЗ рдХрдо


рд╣рдо рд╕рднреА html рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдиреЗ рд╕реЛрдЪрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╣реА рдЬрдЯрд┐рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреЗрдбрд╝ рдкрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЕрдореВрд░реНрддрддрд╛ рд╣реИред Div рдПрд▓рд┐рдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдЪреЗрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

HTMLDivElement -> HTMLElement -> Element -> Node -> EventTarget

рдФрд░ рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдореЗрдВ 10 рд╕реЗ 100 рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдФрд░ рдпрд╣ рд╕рднреА рдзрди рдбреЛрдо рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рдЙрд╕ рддрд╕реНрд╡реАрд░ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдШрд░ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред

HTML рдХреЛ рдЫреЛрдЯрд╛ рдХрд░реЗрдВред рд▓реЗрдЦрди рдХреЗ рд╕рдордп HTML рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рд╣рдЯрд╛рдПрдБ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдШрд░ рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рднреА рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВ:

TextNode -> Node -> EventTarget

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдПрдВред рд╡реЗ рдШрд░ рдХрд╛ рдПрдХ рддрддреНрд╡ рднреА рд╣реИрдВ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

Comment -> CharacterData -> Node -> EventTarget

Jsx рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп рдпрд╣ рджреЗрд╢реА js рдХреЛрдб рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди, рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЯреИрдЧ рдЦреЛрд▓рдиреЗ рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдореЗрдВ рдХрднреА рдЧрд▓рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдмреБрд░рд╛ рд╡реНрдпрд╡рд╣рд╛рд░, рдореИрдВ рдПрдХ рдмреБрд░рд╛ рд╕рдкрдирд╛ рднреА рдХрд╣реВрдБрдЧрд╛, facebook.com рд╣реИ ред рдпрд╣рд╛рдБ HTML рдЯреБрдХрдбрд╝реЗ рд╣реИрдВ:

рдПрдЪрдЯреАрдПрдордПрд▓ рдкреЗрдЬ рд╕реНрдирд┐рдкреЗрдЯ
 <!--  1 --> <div class=""> <div class="_42ef"> <div class="_25-w"> <div class="_17pg"> <div class="_1rwk"> <form class=" _129h"> <div class=" _3d2q _65tb _7c_r _4w79"> <div class="_5rp7"> <div class="_1p1t"> <div class="_1p1v" id="placeholder-77m1n" style="white-space: pre-wrap;">  ... </div> </div> </div> </div> <ul class="_1obb"> ...li... </ul> </form> </div> </div> </div> </div> </div> <!--  2 --> <div> <div> <div class="_3nd0"> <div class="_1mwp navigationFocus _395 _4c_p _5bu_ _34nd _21mu _5yk1" role="presentation" style="" id="js_u"> <div class="_5yk2" tabindex="-1"> <div class="_5rp7"> <div class="_1p1t" style=""> <div class="_1p1v" id="placeholder-6t6up" style="white-space: pre-wrap;">    ? </div> </div> <div class="_5rpb"> <div aria-autocomplete="list" aria-controls="js_1" aria-describedby="placeholder-6t6up" aria-multiline="true" class="notranslate _5rpu" contenteditable="true" data-testid="status-attachment-mentions-input" role="textbox" spellcheck="true" style="outline: none; user-select: text; white-space: pre-wrap; overflow-wrap: break-word;"> <div data-contents="true"> <div class="" data-block="true" data-editor="6t6up" data-offset-key="6b02n-0-0"> <div data-offset-key="6b02n-0-0" class="_1mf _1mj"> <span data-offset-key="6b02n-0-0"> <br data-text="true"> </span> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рджрд╕ рддрддреНрд╡реЛрдВ рдХреЗ рдПрдХ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдШреЛрдВрд╕рд▓рд╛ рдХреЛрдИ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдЯреБрдХрдбрд╝рд╛ рдХреЗрд╡рд▓ рдкрд╛рда "рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦреЗрдВ ..." рдФрд░ рдЖрдЗрдХрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ "рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ?"ред DOM рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧреИрд░-рддрд░реНрдХрд╕рдВрдЧрдд рдЙрдкрдпреЛрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд░рд┐рдПрдХреНрдЯ рдЯреЗрдВрдкрд▓реЗрдЯрд┐рдВрдЧ рдЗрдВрдЬрди рдХрд╛ рд╕рдВрдкреВрд░реНрдг рдкреНрд░рджрд░реНрд╢рди рдмрд╕ рдЕрд╢рдХреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рд╛рдЗрдЯ рдЙрд╕ рд╕рдмрд╕реЗ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдПрдХ рдмрди рдЬрд╛рддреА рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЬрд╛рдирддрд╛ рд╣реВрдВред

рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рд╡реЗрдм рдРрдк


рдкреНрд░рдХрдЯ рдлрд╝рд╛рдЗрд▓


PWA рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдореВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЬрдм рдЖрдк рд╕рд╛рдЗрдЯ рдкрд░ рд╕рдорд░реНрдерди рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбрд┐рд╡рд╛рдЗрд╕ (рд╡рд┐рдВрдбреЛрдЬрд╝, рдПрдВрдбреНрд░реЙрдЗрдб, рдЖрдИрдУрдПрд╕) рдкрд░ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдмрдЯрди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдиреВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдореВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдСрдлрд╝рд▓рд╛рдЗрди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕рдм рд╕реНрдЯреЛрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред

рд╕рд╛рдЗрдЯ рдкрд░ PWA рд╕рдорд░реНрдерди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред Html рдкреЗрдЬ рдореЗрдВ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд▓рд┐рдВрдХ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдлрд╛рдЗрд▓ pwabuilder.com рдкрд░ рдЬреЗрдирд░реЗрдЯ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдореИрдВ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЦрдВрдб рдПрдХ рдЕрд▓рдЧ рдмрдбрд╝реЗ рд▓реЗрдЦ рдХреЗ рдпреЛрдЧреНрдп рд╣реИ, рдФрд░ рд╣рдм рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рдЕрдЪреНрдЫреЗ рд╣реИрдВред

рд╕реЗрд╡рд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛


PWA рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдкрд░ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рд╕реЗрд╡рд╛рд╡реЙрдХрд░ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ рдСрдлрд╝рд▓рд╛рдЗрди рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛ред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рд╡рд╣рд╛рдБ pwabuilder.com рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 // This is the service worker with the Cache-first network const CACHE = "pwabuilder-precache"; const precacheFiles = [ /* Add an array of files to precache for your app */ ]; self.addEventListener("install", function (event) { console.log("[PWA Builder] Install Event processing"); console.log("[PWA Builder] Skip waiting on install"); self.skipWaiting(); event.waitUntil( caches.open(CACHE).then(function (cache) { console.log("[PWA Builder] Caching pages during install"); return cache.addAll(precacheFiles); }) ); }); // Allow sw to control of current page self.addEventListener("activate", function (event) { console.log("[PWA Builder] Claiming clients for current page"); event.waitUntil(self.clients.claim()); }); // If any fetch fails, it will look for the request in the cache and serve it from there first self.addEventListener("fetch", function (event) { if (event.request.method !== "GET") return; event.respondWith( fromCache(event.request).then( function (response) { // The response was found in the cache so we responde with it and update the entry // This is where we call the server to get the newest version of the // file to use the next time we show view event.waitUntil( fetch(event.request).then(function (response) { return updateCache(event.request, response); }) ); return response; }, function () { // The response was not found in the cache so we look for it on the server return fetch(event.request) .then(function (response) { // If request was success, add or update it in the cache event.waitUntil(updateCache(event.request, response.clone())); return response; }) .catch(function (error) { console.log("[PWA Builder] Network request failed and no cache." + error); }); } ) ); }); function fromCache(request) { // Check to see if you have it in the cache // Return response // If not in the cache, then return return caches.open(CACHE).then(function (cache) { return cache.match(request).then(function (matching) { if (!matching || matching.status === 404) { return Promise.reject("no-match"); } return matching; }); }); } function updateCache(request, response) { return caches.open(CACHE).then(function (cache) { return cache.put(request, response); }); } 

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

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

рд╕рд░рд▓ рдЙрдкрдпреЛрдЧ


рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╢реБрджреНрдзрддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ


рд╕рдВрдкреВрд░реНрдг рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╡рд╛рд▓реЗ рдмрд╣реБрдд рдХрдо рд▓реЛрдЧ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рджреГрд╖реНрдЯрд┐ рд╕рд╣рд┐рдд рдЦрд░рд╛рдм рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╡рд╛рд▓реЗ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рд╣реИрдВред рдФрд░ рдЗрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЖрдкрдХреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

  • рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рдкрд░реАрдд рд░рдВрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╕реНрд╡рд╛рд╕реНрдереНрдп рдордВрддреНрд░рд╛рд▓рдп рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, 20% рд▓реЛрдЧреЛрдВ рдХреЛ рджреГрд╖реНрдЯрд┐ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдПрдХ рдЧрд░реАрдм рд╡рд┐рдкрд░реАрдд рд╕рд╛рдЗрдЯреЗрдВ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдЬреАрд╡рди рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреА рд╣реИрдВ, рдФрд░ рд╕реНрд╡рд╕реНрде рд▓реЛрдЧ рдердХрд╛рди рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВред
  • рдЯреИрдмрдЗрдВрдбреЗрдХреНрд╕ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░реЗрдВред рдЖрдкрдХреЛ рдорд╛рдЙрд╕ рдФрд░ рдЯрдЪ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдмрд┐рдирд╛ рд╕рд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХреАрдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХреНрд░рдордг рдХреА рдЙрдЪрд┐рдд рд╡реНрдпрд╡рд╕реНрдерд╛ рд░реВрдкреЛрдВ рдХреЛ рднрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдмрдирд╛рддреА рд╣реИред
  • рд▓рд┐рдВрдХ рдкрд░ Aria- рд▓реЗрдмрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ред рд╕реНрдХреНрд░реАрди рдкрд╛рдардХреЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдЕрдВрджрд░ рдкрд╛рда рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
  • рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рдкреВрд░реА рд╡рд┐рд╢реЗрд╖рддрд╛ред рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рдиред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдпрд╣ рдЪрд┐рддреНрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рддреЛ рдпрд╣ рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред
  • рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рднрд╛рд╖рд╛ред рдПрдЪрдЯреАрдПрдордПрд▓ рдЯреИрдЧ рдХреЛ рднрд╛рд╖рд╛ рд▓реИрдВрдЧ = "рднрд╛рд╖рд╛ рдХреЛрдб" рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред рдпрд╣ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рдЙрдкрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдФрд░ рд╕рд░рд▓ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрди рдирд┐рдпрдореЛрдВ рдХреА рдЕрдирджреЗрдЦреА рдХрд░рддреЗ рд╣реИрдВ, рддрдм рднреА рдЬрдм рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд╕рд╛рдЗрдЯреЛрдВ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИред

рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕


рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдлреНрд░рдВрдЯ-рдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрд▓рдЧ рдХрд░реЗрдВ


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рд╕рд░реНрд╡рд░ рдкрд░ HTML рдкреНрд░рджрд╛рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдВредрдкрд░рд┐рдорд╛рдг рдХреЗ рджреЛ рдЖрджреЗрд╢реЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЛрдб рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдФрд░, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдорд░реНрдерди рджреЗрдиреЗ рдХреА рд▓рд╛рдЧрддред рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЙрдирдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрд╡реЗрджрди рдорд┐рд▓рддрд╛ рд╣реИред

рджреВрд╕рд░рд╛, рдЕрдкрдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрд╕рдкреАрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмреИрдХрдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЕрд▓рдЧ рдХрд░реЗрдВред рдЖрдк рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд╡рд┐рдВрдбреЛрдЬрд╝ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ iOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рд╕рд╛рде рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдПрдХ рдЖрддреНрдо-рдирд┐рд╣рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рдмрд┐рдирд╛ рд╕рд░реНрд╡рд░ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдСрдлрд╝рд▓рд╛рдЗрди рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рддреНрд░реБрдЯрд┐ рдЬреЛ рдореБрдЭреЗ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдЬрдм рд╕реНрдкреНрд░рд┐рдВрдЧ рдпрд╛ рдПрд╕реНрдк.рдиреЗрдЯ рдЬреИрд╕реЗ рдмреИрдХрдПрдВрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рдПрд╕реЗрдВрдмрд▓реА рдХреЗ рд╡рд┐рддрд░рдг рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЗрдХрдЯреНрдареЗ рд╣реБрдП рдПрд╕рдкреАрдП рдЖрд╡реЗрджрди рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХрд╛ рд╕рдордп рдФрд░ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдФрд░ рдПрд╕рдкреАрдП рдХреЛ рдПрдХ рдЕрд▓рдЧ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕реНрдЯреЗрдЯрд┐рдХреНрд╕ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдиреЗрдЧреНрдиреЗрдХреНрд╕ред

рдЫрд╡рд┐

рдирддреАрдЬрддрди, рдкреНрд░рддреНрдпреЗрдХ рддрдХрдиреАрдХ рд╡рд╣ рдХрд░реЗрдЧреА рдЬреЛ рдЙрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд░рддреА рд╣реИред Nginx рд╕рд╣реА рд╣реЗрдбрд░ рдФрд░ рдЕрдзрд┐рдХрддрдо рдЧрддрд┐ рдХреЗ рд╕рд╛рде рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рд╡рд┐рддрд░рд┐рдд рдХрд░реЗрдЧрд╛, рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдЧрд╛, рдХреНрд▓рд╛рдЗрдВрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред

рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░, HTTP / 2, gzip, рдХреИрд╢ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛


рдЖрдкрдХреЗ рдмреИрдХрдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рд╕рдВрд╡рд╛рдж рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рдлрд╛рдЯрдХреЛрдВ рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкрд╛рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреЗрдЧреНрдиреЗрдХреНрд╕ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ред рдФрд░ рдЙрд╕ рдкрд░ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреНрд▓рд╛рдЗрдВрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдЖрд░рд╛рдорджрд╛рдпрдХ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

  • SSL. SSL , , , Nginx. Nginx Asp.Net Core , .
  • GZIP . .
  • Cache . Get, Head , .
  • .

рдлрд┐рд░ рд╕реЗ, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдПрдХ рдЕрд▓рдЧ рдмрдбрд╝реЗ рд▓реЗрдЦ рдХреЗ рдпреЛрдЧреНрдп рд╣реИ, рдореИрдВ рд╕рдВрдкреВрд░реНрдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдирдЧреАрдирдХреНрд╕ рдиреЗрдЧреНрдиреЗрдХреНрд╕рдлрд┐рдЧ.рдЗрдЧреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдЗрдЯ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ ред

рдПрд╕рдИрдУ


Html рдореЗрдВ рдореЗрдЯрд╛ рдЯреИрдЧ рдмрдирд╛рдПрдВ рдФрд░ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рдорд╛рд░реНрдХрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рд╣рд░ рдХреЛрдИ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ рд╡реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рд▓рд╛рдЗрдЯрд╣рд╛рдЙрд╕ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдЦреЗрдВ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВред

рдЕрдВрдд


рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ рдЬрд┐рд╕реЗ рджреЗрдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рдм рдЬрд╛рдирдХрд╛рд░реА рдлреНрд░рдВрдЯ-рдПрдВрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИ, рдФрд░ рдЗрди рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдореЗрдВ рд▓рдЧрднрдЧ рдХреЛрдИ рд╕рдордп рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред

рдпрд╣ рдЖрд▓реЗрдЦ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреНрд╖реЗрддреНрд░, рдлрд╝реЙрд░реНрдо рдФрд░ рдЕрдиреНрдп рдЙрджреНрдпрдо рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХреИрд╕реЗ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рджреВрд╕рд░рд╛ рднрд╛рдЧ рд╣реЛрдЧрд╛ред

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


All Articles