рд▓рд╛рд░рд╡реЗрд▓ рдХреИрд╢рд┐рдВрдЧ: рдмреЗрд╕рд┐рдХреНрд╕ рдкреНрд▓рд╕ рдЯрд┐рдкреНрд╕ рдПрдВрдб рдЯреНрд░рд┐рдХреНрд╕

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


рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред


рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рддреЗрдЬрд╝ рд╣реИ рдФрд░ рдХреЛрдИ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдПрдБ рдирд╣реАрдВ рд╣реИрдВ?
рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдУред рдЧрдВрднреАрд░рддрд╛ рд╕реЗ :)


рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд▓рд╛рдн рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд░реАрдб рдСрдкрд░реЗрд╢рдВрд╕ рдХреЛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдХрд░реЗрдЧрд╛ред


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


рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?


рдЬрдм рдХреЛрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХреБрдЫ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреА рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдЗрдХрд╛рдИ, рдпрд╣ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдХреИрд╢рд┐рдВрдЧ рдХреБрдВрдЬреА ( 'post_' . $id рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИ) рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреЗрдЬреА рд╕реЗ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рднрдВрдбрд╛рд░рдг ( 'post_' . $id ) рдореЗрдВ рдЗрд╕ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдореВрд▓реНрдп рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рд░реЗрдбрд┐рд╕, рдпрд╛ рдЕрдиреНрдп)ред рдпрджрд┐ рдорд╛рди рд╣реИ, рддреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдХреИрд╢ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред



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


рдпрд╣ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрдореЗрдЪреЗ рдпрд╛ рд░реЗрдбрд┐рд╕ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рднреВрд▓" рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЖрд╡реЗрджрди рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдПрдХ рдирдпрд╛ рдореВрд▓реНрдп рд▓реЗрдЧрд╛ред


рдПрдХ рдЙрджрд╛рд╣рд░рдг:


 public function getPost($id): Post { $key = 'post_' . $id; $post = \Cache::get($key); if($post === null) { $post = Post::findOrFail($id); \Cache::put($key, $post, 900); } return $post; } 

рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рдкреЛрд╕реНрдЯ рдЗрдХрд╛рдИ рдХреЛ 15 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдореЗрдВ рд░рдЦрд╛ рд╣реИ (рд╕рдВрд╕реНрдХрд░рдг 5.8 рдХреЗ рдмрд╛рдж рд╕реЗ, рд▓рд╛рд░рд╡реЗрд▓ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╕реЗрдХрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдорд┐рдирдЯ рдереЗ)ред Cache рдореБрдЦреМрдЯреЗ рдореЗрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ remember рд╡рд┐рдзрд┐ рднреА рд╣реИред рдпрд╣ рдХреЛрдб рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:


 public function getPost($id): Post { return \Cache::remember('post_' . $id, 900, function() use ($id) { return Post::findOrFail($id); }); } 

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


рдХреИрд╢реНрдб рдбреЗрдЯрд╛


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


рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрдЦреНрдпрд╛, рддрд╛рд░, рд╕рд░рдгрд┐рдпрд╛рдБ, рдСрдмреНрдЬреЗрдХреНрдЯ (рдпрджрд┐ рд╡реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреНрд░рдордмрджреНрдз рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рд▓рд┐рдВрдХ рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗрдЦреЗрдВ)ред


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


рдХреНрдпрд╛ рдХрд░реЗрдВ рдХреИрд╢?


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


рдЖрдорддреМрд░ рдкрд░, Model::find($id) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ рдХрдИ рдЕрдкрдбреЗрдЯреНрд╕ рд╕реЗ рднрд░реА рд╣реБрдИ рд╣реИ, рддреЛ рдХреНрд╡реЗрд░реАрдЬрд╝ рдбрд╛рд▓реЗрдВ, рдФрд░ рд╣рдЯрд╛рдПрдВ, рдЪреБрдирд┐рдВрджрд╛ рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХ рдЕрдЪреНрдЫреА рд░рд╛рд╣рдд рдорд┐рд▓реЗрдЧреАред hasMany рд╕рдВрдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде hasMany рдЬреЛ рд╣рд░ рдмрд╛рд░ рд▓реЛрдб рд╣реЛрдВрдЧреА, рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рднреА рдЕрдЪреНрдЫреЗ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИрдВред рдЬрдм рдореИрдВрдиреЗ рдПрдХ рджрд┐рди рдореЗрдВ 10+ рдорд┐рд▓рд┐рдпрди рдЖрдЧрдВрддреБрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛, рддреЛ рд╣рдордиреЗ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдЕрдиреБрд░реЛрдз рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ред


рдХреИрд╢реЗ рдЕрдорд╛рдиреНрдп


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


 :   ,     ! : ,  15 ( ,  )... 

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


рд╕реБрд╡реНтАНрдпрд╡рд╕реНрдерд┐рдд рдШрдЯрдирд╛рдПрдБ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдпрд╛ рдпрджрд┐ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди PostPublished рдпрд╛ UserBanned рдЬреИрд╕реА рд╡рд┐рд╢реЗрд╖ рдИрд╡реЗрдВрдЯ UserBanned рдпрд╣ рдФрд░ рднреА рд╕рд░рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рддреНрдд рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдгред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдИрд╡реЗрдВрдЯ рдХреНрд▓рд╛рд╕реЗрд╕ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛:


 abstract class PostEvent { /** @var Post */ private $post; public function __construct(Post $post) { $this->post = $post; } public function getPost(): Post { return $this->post; } } final class PostSaved extends PostEvent{} final class PostDeleted extends PostEvent{} 

рдмреЗрд╢рдХ, PSR-4 рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреЛ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреЛрд╕реНрдЯ рдПрд▓реЛрдХреЗрдВрдЯ рдХреНрд▓рд╛рд╕ ( рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рд╕реЗрдЯ рдХрд░реЗрдВ:


 class Post extends Model { protected $dispatchesEvents = [ 'saved' => PostSaved::class, 'deleted' => PostDeleted::class, ]; } 

рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реНрд░реЛрддрд╛ рдмрдирд╛рдПрдБ:


 class EventServiceProvider extends ServiceProvider { protected $listen = [ PostSaved::class => [ ClearPostCache::class, ], PostDeleted::class => [ ClearPostCache::class, ], ]; } class ClearPostCache { public function handle(PostEvent $event) { \Cache::forget('post_' . $event->getPost()->id); } } 

рдпрд╣ рдХреЛрдб рдкреЛрд╕реНрдЯ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрджреНрдпрддрди рдпрд╛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХреИрд╢ рдХрд┐рдП рдЧрдП рдорд╛рдиреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред рд╢реАрд░реНрд╖ -5 рд▓реЗрдЦреЛрдВ рдпрд╛ рдмреНрд░реЗрдХрд┐рдВрдЧ рдиреНрдпреВрдЬрд╝ рдЬреИрд╕реА рдЕрдорд╛рдиреНрдп рд╕реВрдЪреАрдмрджреНрдзрддрд╛ рд╕реВрдЪреА рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛрдЧреАред рдореИрдВрдиреЗ рддреАрди рд░рдгрдиреАрддрд┐рдпрд╛рдБ рджреЗрдЦреАрдВ:


рд░рдгрдиреАрддрд┐ рдХреЛ рдЕрдХреНрд╖рдо рди рдХрд░реЗрдВ


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


рдвреВрдБрдвреЗрдВ рдФрд░ рд░рдгрдиреАрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ


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


 public function getTopPosts() { return \Cache::remember('top_posts', 900, function() { return Post::/*   top-5*/()->get(); }); } class CheckAndClearTopPostsCache { public function handle(PostEvent $event) { $updatedPost = $event->getPost(); $posts = \Cache::get('top_posts', []); foreach($posts as $post) { if($updatedPost->id == $post->id) { \Cache::forget('top_posts'); return; } } } } 

рдпрд╣ рдмрджрд╕реВрд░рдд рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


рд░рдгрдиреАрддрд┐ "рд╕реНрдЯреЛрд░ рдЖрдИрдбреА"


рдпрджрд┐ рд╕реВрдЪреА рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдХреНрд░рдо рдорд╣рддреНрд╡рд╣реАрди рд╣реИ, рддреЛ рдХреИрд╢ рдореЗрдВ рдЖрдк рдХреЗрд╡рд▓ рдЖрдИрдбреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдлреЙрд░реНрдо 'post_'.$id рдХреА рдЪрд╛рдмрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ Cache::many рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ Cache::many , рдЬреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХреИрд╢ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (рдЗрд╕реЗ рдорд▓реНрдЯреА рдЧреЗрдЯ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред


рдХреИрд╢ рдХрд╛ рдЕрдорд╛рдиреНрдп рд╣реЛрдирд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рджреЛ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред


рд╕рдВрдмрдВрдз рдХреИрд╢рд┐рдВрдЧ


рд░рд┐рд╢реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдХреИрд╢рд┐рдВрдЧ рд╕рдВрд╕реНрдерд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


 $post = Post::findOrFail($id); foreach($post->comments...) 

рдпрд╣ рдХреЛрдб рджреЛ SELECT рдХреНрд╡реЗрд░реА рдХрд░рддрд╛ рд╣реИред id рджреНрд╡рд╛рд░рд╛ рдЗрдХрд╛рдИ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ post_id рджреНрд╡рд╛рд░рд╛ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ред рд╣рдо рдХреИрд╢рд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:


 public function getPost($id): Post { return \Cache::remember('post_' . $id, 900, function() use ($id) { return Post::findOrFail($id); }); } $post = getPost($id); foreach($post->comments...) 

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


 public function getPost($id): Post { return \Cache::remember('post_' . $id, 900, function() use ($id) { $post = Post::findOrFail($id); $post->load('comments'); return $post; }); } 

рджреЛрдиреЛрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрдм рдХреИрд╢ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ 'post_'.$id рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП 'post_'.$id рд╣рд░ рдмрд╛рд░ рдЬрдм рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдмрд╣реБрдд рдХреБрд╢рд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгреА рдХреИрд╢ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ:


 public function getPostComments(Post $post) { return \Cache::remember('post_comments_' . $post->id, 900, function() use ($post) { return $post->comments; }); } $post = getPost($id); $comments = getPostComments($post); foreach($comments...) 

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


рдХреИрд╢ рдХреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╕рддреНрдп рдХрд╛ рдПрдХрд▓ рд╕реНрд░реЛрдд


рдпрджрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреИрд╢ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдХрдо рд╕реЗ рдХрдо рджреЛ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ: Cache::get рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Cache::get / Cache::remember рдФрд░ Cache::forget рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Cache::forget ред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ рдЬрдм рдпрд╣ рдХреБрдВрдЬреА рдПрдХ рд╕реНрдерд╛рди рдкрд░ рдмрджрд▓ рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдереА, рдФрд░ рд╡рд┐рдХрд▓рд╛рдВрдЧрддрд╛ рдЯреВрдЯ рдЧрдИред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕рд▓рд╛рд╣ рдирд┐рд░рдВрддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдХреИрд╢реЗ рдХреАрдЬрд╝ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдХрд┐рдЬрд╝ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ:


 final class CacheKeys { public static function postById($postId): string { return 'post_' . $postId; } public static function postComments($postId): string { return 'post_comments' . $postId; } } \Cache::remember(CacheKeys::postById($id), 900, function() use ($id) { $post = Post::findOrFail($id); }); // .... \Cache::forget(CacheKeys::postById($id)); 

рдмреЗрд╣рддрд░ рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдореЗрдВ рдкреНрд░рдореБрдЦ рдЬреАрд╡рди рдХрд╛рд▓ рдХрд╛ рднреА рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдб рдкрдврд╝рддреЗ рд╕рдордп рдпреЗ 900 рдпрд╛ 15 * 60 рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рднрд╛рд░ рдмрдврд╝рд╛рддреЗ рд╣реИрдВред


рд▓реЗрдЦрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ


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


 $post = getPost($id); $post->title = $newTitle; $post->save(); 

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


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


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

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


All Articles