рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рдЖрдпрд╛:
рдореИрдВ PHP рдХреЗ рд╕рд╛рде рджреЛрд╕реНрдд рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм "рдШрд╛рддрдХ рджреЛрд╖" рдерд╛ :) - PHP, рдФрд░ рдореИрдВ рдПрдХ рдЕрдЬрдЧрд░ рдкреНрд░рд╢рдВрд╕рдХ рд╣реВрдБ рдФрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдмреИрдХрдПрдВрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдмреЛрд▓рдирд╛, рдЗрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓рд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд░реНрд╖ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдПрдХ рдорд╣рддреНрд╡рд╛рдХрд╛рдВрдХреНрд╖реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдерд╛, рд╢реБрд░реВ рдореЗрдВ рдЗрд╕ рдУрдкреЗрд░рд╛ рд╕реЗ рд╣рд┐рдпрд╛рд▓рд╛рдб рдФрд░ рдЕрдиреНрдп рдмрдиреНрд╕ рдХреЛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрдм рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдпреЛрдЬрдирд╛рдПрдВ рддреИрдпрд╛рд░ рдХреА рдЬрд╛ рд░рд╣реА рдереАрдВ, рдирд┐рд╡реЗрд╢рдХ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рдереЗ, рдореИрдВрдиреЗ рдЙрди рдореБрджреНрджреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдХреИрд╢рд┐рдВрдЧ рдореБрджреНрджреЛрдВ рд╕рд╣рд┐рдд рдЗрд╕ рдХрд╛рдо рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП
рд╡рд╛рд░реНрдирд┐рд╢ + рдИрдПрд╕рдЖрдИ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрд░реЗ рдкрд╕рдВрджреАрджрд╛
рдлреНрд▓рд╛рд╕реНрдХ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╕реМрджрд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рднреА рджрд┐рдЦрд╛рдПред рдмрд╛рдж рдореЗрдВ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ рдХрд┐ рд╢рд╛рдпрдж рд╡рд╛рд░реНрдирд┐рд╢ рдПрдХ "рдЕрддрд┐рд░рд┐рдХреНрдд рдЦрд┐рд▓рд╛рдбрд╝реА" рд╣реИ рдФрд░ рд╕рднреА рд╕рдорд╛рди рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ
рдирдЧреАрдиреЗрдХреНрд╕ + рдореЗрдореНрдХреЗрдЪреНрдб + рдПрд╕рдПрд╕рдЖрдИ рдмрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рднреА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЕрдВрддрд░ рдирд╣реАрдВ рдереЗ, рд▓реЗрдХрд┐рди рдмрд╛рдж рд╡рд╛рд▓рд╛ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдФрд░ рдкреНрд░рдмрдВрдзрдиреАрдп рд▓рдЧ рд░рд╣рд╛ рдерд╛ред
рдЙрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рд░рдирд╡реЗ рдХреЗ рд▓рд┐рдП рдЯреИрдХреНрд╕реА рдирд╣реАрдВ рдХреА, рдпрд╛ рдХрд░ рджрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдмрд┐рдирд╛ред рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ "рдХреЛрдб рдХреЛ рдХрдВрдШреА" рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдУрдкрдирд╕реЛрд░реНрд╕ рдореЗрдВ рдФрд░ рдЬрдирддрд╛ рдХреЗ рд▓рд┐рдП рдиреНрдпрд╛рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд╛рд▓ рджрд┐рдпрд╛ред
рдореИрдВ рдкреГрд╖реНрда рдЯреБрдХрдбрд╝реЗ рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдЙрдкрд░реЛрдХреНрдд рд▓реЗрдЦреЛрдВ рдореЗрдВ, рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдФрд░ Google рдФрд░ рдпреИрдВрдбреЗрдХреНрд╕ рдФрд░ рднреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред рдореИрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рдирдЧреНрдиреЗрдХреНрд╕ + рдореЗрдореНрдХреЗрдЪреНрдб + рдПрд╕рдПрд╕рдЖрдИ рдФрд░
рдлреНрд▓рд╛рд╕реНрдХ рд╣реИрдВ ред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдХрдИ рд╡рд╛рдХреНрдпреЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЬреЛ рд╡реЗрдм рдкреЗрдЬреЛрдВ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рдЖрдорддреМрд░ рдкрд░ рдпреВрдЖрд░рдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдореЗрдореЗрдХреИрдЪреНрдб рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдФрд░ рдлреЙрд░реНрдо рдХреА рдПрдХ рдкрдВрдХреНрддрд┐
<! - # рд╡рд░реНрдЪреБрдЕрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ = <URI> "-> рдкреГрд╖реНрда рдкрд░ рд╣реА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ! <URI> - рдореБрдЦреНрдп рдореВрд▓реНрдп рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреИрд╢ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд" рдирдЧреНрдиреЗрдХреНрд╕ рдиреЗ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдкреНрд░реЛрдХреНрд╕рд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рд╕рд░реНрд╡рд░ рд╕реЗ рд╕реАрдзреЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ред
рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд╛рдЗрдЯ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдореЗрдВ рдПрдХ рдмреНрд▓реЙрдХ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдЧреНрд░реАрдЯрд┐рдВрдЧ рдФрд░ рдЙрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рдкреЛрд╕реНрдЯ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдПрдХ рдорд╣рдВрдЧрд╛ рдСрдкрд░реЗрд╢рди рд╣реИ, рдФрд░ рдЕрдЧрд░ рд╣рдо рд╡рд╣рд╛рдВ рджреЛрд╕реНрддреЛрдВ рдХреЗ рдЧреНрд░рд╛рдл рдХреЛ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЗрд╡рд▓ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХрд╛рдлреА рд╕реВрдЦрд╛ рджреЗрдЧрд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕рдордЧреНрд░ рдкреГрд╖реНрда рд▓реЛрдбрд┐рдВрдЧ рдЧрддрд┐ред рд▓реЗрдХрд┐рди рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реИ! рдЖрдк рдКрдкрд░ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ рдЗрд╕ рдмреНрд▓реЙрдХ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрдм рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрд▓реНрдмрдо рдореЗрдВ рдПрдХ рдирдпрд╛ рдлреЛрдЯреЛ рдЦреЛрд▓рддрд╛ рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХреНрд╡реЗрд░реА рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреАред Nginx рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЛ "рдмрд┐рдирд╛ рддрдирд╛рд╡ рдХреЗ" рдмреИрдХрдПрдВрдб рджреЗрдЧрд╛ред рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдПрдХ рдирдпрд╛ рдкреЛрд╕реНрдЯ рдмрдирд╛рдпрд╛ рд╣реИ рдпрд╛ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦреА рд╣реИред
рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд╡рдпрдВ рдХреИрд╢ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреЗрдЬ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрдм Nginx рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдФрд░ Nginx рдПрдХ рдЪреАрдЬ рд╣реИ! рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдЪреМрдЦрдЯреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рд▓реМрдЯрдиреЗ рдХреА рдЧрддрд┐ рдореЗрдВ рдЕрддреБрд▓рдиреАрдп рд╣реИред
рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣рд┐рд╕реНрд╕рд╛
рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджрд╛рд░реНрд╢рдирд┐рдХ рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ
рдлреНрд▓рд╛рд╕реНрдХ-рдлреНрд░реИрдЧрдореЗрдВрдЯ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдФрд░
рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдЬреАрдердм рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реИ, рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмреНрд▓реЙрдЧ рдХреЗ "рд▓рд╛рдЗрдЯ" рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИред рдЕрдЧрд░ рдпрд╣ рдореЗрд░реЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рднреА рджрд┐рд▓рдЪрд╕реНрдкреА рдХрд╛ рд╡рд┐рд╖рдп рд╣реЛрдЧрд╛, рддреЛ рдореИрдВ рдПрдкреАрдЖрдИ рдХреЗ рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░, рд╡рд╛рд░реНрдирд┐рд╢ + рдИрдПрд╕рдЖрдИ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддрд╛ рд╣реВрдВред
рдХреИрд╢рд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛
рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рдкреГрд╖реНрда рдХреЗ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдХреЛрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдлреНрд▓рд╛рд╕реНрдХ-рдлреНрд░реИрдЧрдореЗрдВрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдПрдХ рдХреЛ рдЬреБрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣ рдХреЗ рдлрд╝рдВрдХреНрд╢рди, рдореИрдВ рдЙрдиреНрд╣реЗрдВ
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЦрдВрдб рджреГрд╢реНрдп рдХрд╣реВрдВрдЧрд╛, рд╡реЗ рдЙрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рдЙрдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╡реЗрдм рдкреЗрдЬ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рджреЗрдирд╛ рд╣реЛрдЧрд╛ред
from flask import Flask from flask.ext.fragment import Fragment app = Flask(__name__) fragment = Fragment(app) @fragment(app, cache=300) def posts_list(page): page = int(page) page_size = POSTS_ON_PAGE pagination = Post.query.filter_by().paginate(page, page_size) posts = Post.query.filter_by().offset((page-1)*page_size).limit(page_size).all() return render_template('fragments/posts_list.html', pagination=pagination, posts=posts)
рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ, рдирд┐рдореНрди рд░реВрдк рдореЗрдВ рдЯреБрдХрдбрд╝рд╛ рдХреЙрд▓ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
<div class="content"> {% block content %} {{ fragment('posts_list', page) }} {% endblock %} </div>
рдЕрдм, рдкрд╣рд▓реА рдмрд╛рд░
page=2
рд╕рд╛рде рдЯреБрдХрдбрд╝рд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ,
posts_list
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ
fragment:/_inc/posts_list/2
рд╕рд╛рде
posts_list
рдХреИрд╢ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
fragment:/_inc/posts_list/2
, рдФрд░ рдкреЗрдЬ рдкрд░ Nginx рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
<div class="content"> </div>
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
fragment:fresh:/_inc/posts_list/2
рдХреБрдВрдЬреА
fragment:fresh:/_inc/posts_list/2
рдорд╛рди 1 рдХреЗ рд╕рд╛рде рднреА
fragment:fresh:/_inc/posts_list/2
рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреЙрд▓ рдХреЛ
posts_list
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧреА, рдЬрдмрдХрд┐ рдпрд╣ рдХреБрдВрдЬреА рдХреИрд╢ рдореЗрдВ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдорд╛рди> 0 рд╣реИред
рдореБрдЦреНрдп
fragment:/_inc/posts_list/2
рд▓рд┐рдП TTL
fragment:/_inc/posts_list/2
рдХреЛ 300 рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рд╣рдордиреЗ рдЗрд╕реЗ
fragment
рд╕рдЬреНрдЬрд╛рдХрд╛рд░ рдХреЗ
cache
рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ) + рдорд╛рди FRAGMENT_LOCK_TIMEOUT рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 180 рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдХреБрдВрдЬреА
fragment:fresh:/_inc/posts_list/2
рдХрд╛ TTL
fragment:fresh:/_inc/posts_list/2
рдХреЗрд╡рд▓ рдкрд░ред рд╕реЗрдЯ рд╡реИрд▓реНрдпреВ 300 рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, Nginx, рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ
<!--# include virtual="/_inc/posts_list/2" тАУ>
рдХреЛрдб рдореЗрдВ 480 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреИрд╢ рдХрд┐рдП рдЧрдП рдХреИрд╢ рд╕реЗ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдирдЧреНрдиреЗрдХреНрд╕ рдЯреАрдЯреАрдПрд▓ рд╕рдорд╛рдкреНрддрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЖрд╡реЗрджрди 300 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛, рдЬрдм
fragment:fresh:/_inc/posts_list/2
рдкреНрд░рдореБрдЦ рдореМрдЬреВрдж рд╣реИрдВред
рдлреНрд▓рд╢ рдХреИрд╢
рддреЛ рдЦрдВрдбрд┐рдд рд╣реИ рдХреИрд╢ред рд╡реИрд╕реЗ, рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдлреНрд▓рд╛рд╕реНрдХ-рдлреНрд░реИрдЧрдореЗрдВрдЯ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдпрд╣ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдкрджреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдПрдХ рдкреЛрд╕реНрдЯ рдпрд╛ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реА, рддреЛ рдХреИрд╢ рдореЗрдВ рд╕реВрдЪреА рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧреАред рдЗрд╕реЗ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдиреАрдЪреЗ рдПрдХ рдлреНрд▓рд╛рд╕реНрдХ рджреГрд╢реНрдп рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕реЗ рдкреЛрд╕реНрдЯ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдиреЗ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
@app.route('/new/post', methods=['GET', 'POST']) @login_required def new_post(): form = PostForm() if form.validate_on_submit(): form.post.author_id = current_user.id db.session.add(form.post) db.session.commit() fragment.reset(posts_list) fragment.reset(user_info, current_user.id) flash('Your post has saved successfully.', 'info') return redirect(url_for('index')) return render_template('newpost.html', form=form)
рдпрд╣рд╛рдБ рджреЛ
fragment.reset
рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓рд╛
fragment.reset(posts_list)
рдЦрдВрдб рджреГрд╢реНрдп
posts_list
рд▓рд┐рдП рдХреИрд╢ рдлреНрд▓рд╢ рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛
fragment.reset(user_info, current_user.id)
рдПрдХ рдпреВрдЬрд░ рдЧреНрд░реАрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЙрд╕ рдмрд╣реБрдд рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдлреНрд▓рд╢ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреЛрд╕реНрдЯ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдпреВрдЖрд░рдЖрдИ / _inc / user_info / 21 рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЕрдВрддрд┐рдо рдЕрдВрдХ
userid
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд╣реИред рд╡рд┐рд╕реНрддрд╛рд░ рдЕрдкрдиреЗ рдЖрдк рд╣реА рдХреБрдВрдЬреА рд░реАрд╕реЗрдЯ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ
fragment.reset
рджрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рддрд╛ рд╣реИред
рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рд╛рд▓рд╛рдд рдмрджрддрд░ рд╣реИрдВ, рд╡рд╣рд╛рдВ рдкреЗрдЧрд┐рдиреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХрдИ рд▓рдЪреАрд▓реА рдЪрд╛рдмрд┐рдпрд╛рдВ рд╣реЛрдВрдЧреА рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкрджреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдкреЗрдЬ рдмрдирд╛рдП рдЧрдП рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
fragment:fresh:/_inc/posts_list/2
, рдпрд╣ рдХреЗрд╡рд▓ рджреВрд╕рд░реЗ рдкреГрд╖реНрда рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреБрдВрдЬреА рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рдЙрдЪреНрдЪ рдорди рдХреЗ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдиреАрдЪреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рд╣реИ рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреИрд╢ рд░реАрд╕реЗрдЯ рдЯреБрдХрдбрд╝рд╛
view posts_list
ред
@fragment.resethandler(posts_list) def reset_posts_list(): page_size = POSTS_ON_PAGE pagination = Post.query.filter_by().paginate(1, page_size) for N in range(pagination.pages): fragment.reset_url(url_for('posts_list', page=N+1))
рдпрд╣рд╛рдБ рд╣рдо "рдХрд╕реНрдЯрдо" рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ
fragment.resethandler
.resethandler рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ
fragment.resethandler
, рдЬрд┐рд╕рдореЗрдВ
fragment.reset_url
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреЛрд╕реНрдЯ рд╕реВрдЪреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдлрд╝реНрд▓рд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдХреЛрдб рдХрд╛ рдПрдХ рдФрд░ рдмреНрд▓реЙрдХ рдкреЗрд╢ рдХрд░реВрдВрдЧрд╛, рдпреЗ рдлреНрд▓рд╛рд╕реНрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЧрдарди рдФрд░ рд▓реЗрдЦрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рдмрддрд╛рддреЗ рд╣реИрдВред
def _render(self, url, timeout, deferred_view): if self.memcache and timeout: if not self._cache_valid(url): self._cache_prepare(url, timeout, deferred_view) return jinja2.Markup('<!--# include virtual="{0}" -->'.format(url)) else: return jinja2.Markup(deferred_view()) def _cache_valid(self, url): return bool(self.memcache.get(self.fresh_prefix+url) or False) def _cache_prepare(self, url, timeout, deferred_view): successed_lock = self.memcache.add(self.lock_prefix+url, 1, self.lock_timeout) if successed_lock: result = Compressor.unless_prefix+(deferred_view()).encode('utf-8') self.memcache.set(self.body_prefix+url, result, timeout+self.lock_timeout) self.memcache.set(self.fresh_prefix+url, 1, timeout) self.memcache.delete(self.lock_prefix+url)
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рд▓реЙрдХ рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдзрд╛рдЧрд╛ рдЬреЛ рдПрдХ рд▓реЙрдХ рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд╣реЛрддрд╛ рд╣реИ рд╡рд╣ рдХреИрд╢ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рдмрд╛рдХреА рдПрдХ рдореВрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкреБрд░рд╛рдирд╛ рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛? рдФрд░ рд╣рдореЗрдВ рдлреНрд░рдВрдЯрдПрдВрдб рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдПрдХ рдЧрдВрднреАрд░ рдЙрддрд░рд╛рдИ рдорд┐рд▓ рдЧрдпрд╛, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрдм рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреАрдмрдЧреЛрд▓рдмрд╛рд░ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдмрд╛рдж рдореЗрдВ, рдореИрдВ рдЗрд╕ рдЕрдиреБрдорд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдПрдХ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдбрд╛рд▓рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдмреНрд▓реЙрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреЛрд╕реНрдЯ рдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 5% рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдмрд╛рдХреА рд╕рдм рджреЗрдЦ рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рджреЛ рдпрд╛ рддреАрди рджрд░реНрдЬрди рдкреЛрд╕реНрдЯ рджреЛ рдпрд╛ рддреАрди рджрд░реНрдЬрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рднрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдХрдордЬреЛрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкрд░ рдЕрдВрддрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред
FRAGMENT_CACHING
рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ
FRAGMENT_CACHING
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рди рдХреЛ рд╕реЗрдЯ рдХрд░рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХреЛ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрд╡реЗрджрди рдирдВрдЧреЗрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдХрдЯрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╡рд┐рд╕реНрддрд╛рд░ рдЕрдкрдиреЗ рдЖрдк рдЯреБрдХрдбрд╝реЗ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдЧрд╛ред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рди рдХреЗрд╡рд▓ рд╡реЗрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдерд╛, рдЬреЛ рдкрд╛рдЗрдерди рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЙрди рд╕рднреА рдХреЛ рднреА рдЬреЛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдпрд╣ рднреА рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЕрджреНрднреБрдд
рдлреНрд▓рд╛рд╕реНрдХ рдврд╛рдВрдЪреЗ рдХреЛ рд▓реЛрдХрдкреНрд░рд┐рдп рдмрдирд╛рдиреЗ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛ рд╣реИред