рдХрдЯ рдХреЗ рддрд╣рдд рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрддреНрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ - рдЖрдк рд╕рднреА рдЙрдиреНрд╣реЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред
рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕
рддреЛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдПрдХ рдмрд╛рд░, рдЕрдкрдиреЗ рдкреНрд░рд┐рдп рдХреЗ рд╕рд╛рде, рд╣рдордиреЗ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдЫреЛрдЯрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рддрдм рдореИрдВ рдХреЗрд╡рд▓ рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдВ рд▓рдЧрд╛ рд╣реБрдЖ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдирд┐рдпреБрдХреНрдд рдХрд░рдирд╛ рдкрдбрд╝рд╛: рдореИрдВрдиреЗ рдЙрд╕реЗ рд▓реЗрдЖрдЙрдЯ рджрд┐рдпрд╛, рдЙрд╕рдиреЗ рд╣рдореЗрдВ рд▓реЗрдЖрдЙрдЯ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЦреБрдж рдмрддрд╛рдпрд╛ред рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рд╣рдореЗрдВ 130-150 рд░реВрдмрд▓ рдХреА рд▓рд╛рдЧрдд рдХреА рдореЗрдЬрдмрд╛рдиреА рдХрд░рдирд╛ - рдмреЗрд╢рдХ, рдпрд╣ рдПрд▓рдПрдПрдордкреА рдерд╛ред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рдкреИрдирдХреЗрдХ рдиреЗ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╕рдордп рдмреАрддрддрд╛ рдЧрдпрд╛ рдФрд░ рд╣рдо рджреВрд╕рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдкрдХреНрд╡ рд╣реЛ рдЧрдПред рдЕрдм рдореИрдВ рдЦреБрдж рд╕рдм рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдКрдкрд░ рдлреЗрдВрдХ рджрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рд▓реЗрдЖрдЙрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╣реАред рдЗрд╕ рдмрд╛рд░ рдХреБрдЫ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ: рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдХреЗ рдЭреБрдВрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рд╕рд╛рдЗрдЯ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред
рдЖрджрдд рд╕реЗ рдмрд╛рд╣рд░, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛: рд╡реАрдкреАрдПрд╕ рдХреЗ рд▓рд┐рдП рдЯреИрд░рд┐рдл рдкреГрд╖реНрда рдЦреЛрд▓реЗрдВ, рдиреАрдЪреЗ рд╕реЗ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ - рдареАрдХ рд╣реИ, рд▓рдЧрднрдЧ 800-1000 рд░реВрдмрд▓ред тАЬрддреЛ? рд╣рдо 200 рд░реВрдмрд▓ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рддреЗ рдереЗ ... тАЭ- рдЬреАрд╡рдирд╕рд╛рдереА рд╣реИрд░рд╛рди рдерд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдзрд┐рдХ рдХреНрдпреЛрдВ? рдЙрддреНрддрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕реНрдкрд╖реНрдЯ рд╣реИ: рд╡рд╛рдпреБ рд╕реЗрдирд╛, рдпрджрд┐ рдЖрдк рдореБрдЭреЗ рдирд╣реАрдВ рдмрддрд╛рдПрдВрдЧреЗ, рддреЛ рджрдЬрдВрдЧрд╛ рд╡рд╣рд╛рдБ, рдпрд╣рд╛рдБ рдФрд░ рд╡рд╣рд╛рдБ рд╣реИ, "рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдЬреБрдорд▓рд╛ рдирд╣реАрдВ рд╣реИ!" - рд▓реЗрдХрд┐рди рдЬреБрдорд▓рд╛ рдХрд╛ рдХреНрдпрд╛? рдЬреБрдорд▓рд╛, рдЬреАрддрд╛: 100 рд░реВрдмрд▓ред рдПрдХ рдорд╣реАрдирд╛ рдЦреБрд╢реА рд╕реЗ рдЬрд┐рдпреЛред рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рдЙрддреНрддрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред
рдХрд╛рд░реНрдп
рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рд░реНрдп рд╣реИ: рдиреНрдпреВрдирддрдо cps рдФрд░ django рдкрд░ рддреИрдпрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ - рд╕реНрдЯреЗрдЯрд┐рдХреНрд╕, рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЗ рд░реВрдк, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдиреНрдпреВрдирддрдо: 200 рдПрдордмреА рд░реИрдо, 500 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдкреНрд░рддрд┐рд╢рдд, рд╕реНрдХреНрд░реВ рдкрд░ - рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП рджреЛ рдЧрд┐рдЧреНрд╕ рд╣реЛрдиреЗ рджреЗрдВред
рдбреАрдмреА
рдХрд╛рд░реНрдп рдореЗрдВ рдЕрдбрд╝рдЪрди: рд░рд╛рдоред рд╕рд╛рдЗрдХреНрд▓рд╛рдЗрдЯ рд▓реЗрдВред рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред рдХреНрдпрд╛! рд╕рдЪ рдореЗрдВ, рд╡рд╣ рдЗрддрдирд╛
рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рдХреИрд╢ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рдХрдорд┐рдпреЛрдВ рдХреА рднрд░рдкрд╛рдИ рдХрд░рддреЗ рд╣реИрдВред
Kesh
рд╣рдо рд╕рднреА рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд▓реЗрддреЗ рд╣реИрдВ: рдирдЧреНрдиреЗрдХреНрд╕ + рдореЗрдореНрдХреЗрдб рдФрд░ рд╕рд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЬреБрдВрдЧрд╛ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред
рд╡реЗрдм рд╕рд░реНрд╡рд░
рдпрд╣
uwsgi рд╣реЛрдЧрд╛ - рддреЗрдЬ рдФрд░ рдлреИрд╢рдиреЗрдмрд▓ред рдЧреЛрд▓рд╛рдХрд╛рд░ рд╡реИрдХреНрдпреВрдо рдХреЗ рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдзрд┐рд╡реЗрд╢рди
рдХрд╣реАрдВ рд╕рддреНрд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рд░реЗрдбрд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдирд╣реАрдВред рдореЗрдордХреЗрдб рднреА рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ: рдХреИрд╢ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рдЕрдХреНрд╕рд░ рдкреВрд░реЗ рдХреИрд╢ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рд╕рддреНрд░
рд╣рдЯрд╛ рджрд┐рдП
рдЬрд╛рдПрдВрдЧреЗ ред рдЬрдВрдЧ рдореЗрдВ рдирдпрд╛ 1.4 рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдХреБрдХреА-рдЖрдзрд╛рд░рд┐рдд рд╕рддреНрд░ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рд░рд▓ рд╣реИ: рд╕рднреА рд╕рддреНрд░ рдбреЗрдЯрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдХреБрдХреАрдЬрд╝ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдбреЗрдЯрд╛ рд╕реНрд╡рдпрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рджреНрд╡рд╛рд░рд╛ рдЕрдЦрдВрдбрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред
рдЧреЛрджреА рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред
рд╕рд╛рдордЧреНрд░реА
рдпрд╣рд╛рдБ рд╣рдо рд╕рд┐рд░реНрдл рдорд╛рд░реНрдХрдбрд╛рдЙрди рд▓реЗрддреЗ рд╣реИрдВред "рдХреНрдпреЛрдВ рдорд╛рд░реНрдХрд╛рдбрд╛рдЙрди?" рд╡рд╣ рдорд╕реНрдд рд╣реИред рд╡рд╣ рдХрдорд╛рд▓ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдпрд╣ рд▓реЗрдЦ рдореИрдВ рдЗрд╕ рдкрд░ рд▓рд┐рдЦрддрд╛ рд╣реВрдВред рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧрд╛, рдЗрд╕рдореЗрдВ рдЯреИрдЧ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред рдПрдордбреА рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдХрднреА-рдХрднреА рдЖрдзрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдлреЗрдХрдбрд┐рдЯрд░ рдЕрд▓рд╛рдЗрдХ рдПрдбрд┐рдЯрд░ рд╕реЗ рдХрдЪрд░рд╛ рдФрд░ 100 рдореЗрдВ рдПрдХ рдмрд╛рд░ рдЖрдВрдЦ рдХреЛ рдЕрдзрд┐рдХ рднрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд╛рда рдХреЛ рд╕рд╛рдЗрдЯ рдХреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рд╕рдВрдкрд╛рджрдХ: рдХреБрдЫ рд╢реИрд▓рд┐рдпреЛрдВ рд╕рдм рдХреБрдЫ рд╢рд╛рд╕рди рдХрд░рддреА рд╣реИрдВ - рдЬреИрд╕реЗ рдХрд┐ рд╕реИрд░реВрдиред
рдореБрд▓рд╛рдпрдо
рд╕рдмрд╕реЗ рдирдпрд╛ рдФрд░ рд╕рдмрд╕реЗ рддреЗрдЬ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП Ubuntu рд╕рд░реНрд╡рд░ рдХреЛ рдХрдо рд╕реЗ рдХрдо рд▓реЗрдВ: nginx, memcached, python 2.7ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕реНрд▓рд┐рдЯрдЬрд╝, рдкрд┐рд▓реНрд▓рд╛ рд▓рд╛рдЗрдирдХреНрд╕, рд╕реНрд▓реИрдХреНрд╕ рдЬреИрд╕реЗ рдХреБрдЫ рдЖрд╕рд╛рди рд▓реЗрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ - рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ ubuntu рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо 128 рдПрдордмреА рд░реИрдо рд╣реИ, рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ "рдмреЗрд╕ рд╕рд┐рд╕реНрдЯрдо" + рдХреБрдЫ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдореБрдЭреЗ рд╕реНрдХреНрд░реВ рдкрд░ рдПрдХ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рдЕрдзрд┐рдХ рдорд┐рд▓рд╛ред рд╕рд░реНрд╡рд░ рд╡рд┐рддрд░рдг,
рд╢реНрд░реАрдорд╛рди ред рд▓реЗрдХрд┐рди рд╣рдордиреЗ рд▓реЗрдЦ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдорд╛рдк рдХреЛ рдЬрд╛рдиреЗрдВрдЧреЗред
рдбрд┐рдЬрд╝рд╛рдЗрди
Django
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдЕрдкрдирд╛ dzhangi config рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
Kesh
рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рдмрд╕реЗ рдордЬрдмреВрдд рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдзреАрдореА рдмреИрдХрдПрдВрдб рдХреЗ рд╕рд╛рдордиреЗ рдХреИрд╢ рд╣рдорд╛рд░реА рдврд╛рд▓ рд╣реЛрдЧреАред рдХрдИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рдЪреБрдХреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
рдХреИрд╕реЗ рдЪрд▓реЗрдЧрд╛? рдпрд╣ рд╕рд░рд▓ рд╣реИ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдкреГрд╖реНрда рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдирд╛рдЬрд╝рд┐рдВрдХреНрд╕ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдХреИрд╢ рдореЗрдВ рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ dzhang рдЗрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдХреИрд╢ рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдирд╛рдЬрд╝рд┐рдВрдХреНрд╕ рдХреЛ рджреЗрддрд╛ рд╣реИ, рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдлреНрд░рдВрдЯреЗрдВрдб рдЗрд╕реЗ рдЕрдкрдиреЗ рджрдо рдкрд░ рджреЗрдЧрд╛ред рдпрд╛рдиреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рд╛рдЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдмрд╛рд░ рдЬрд╛рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдФрд░ рдмрд╛рдж рдХреЗ рд╕рднреА рд╕рдордп рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдореЗрдореНрдХреИрд╢ + рд╡рд╛рдЗрдЬрд╝рд┐рдВрдХреНрд╕ рдХреА рдЧрддрд┐ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧреАред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рд╛рди? рдЦреИрд░, рд▓рдЧрднрдЧ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреИрд╢ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИ, рдПрдХ рдЬрдЯрд┐рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рдХрдИ рдиреБрдХрд╕рд╛рди рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рднрд░реЗ рдЧрдП рдлреЙрд░реНрдо рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рдмрд╛рд░ рдЗрд╕ рдпреВрдЖрд░рдПрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреИрд╢ рд╕реЗ рдПрдХ рд╣реА рдлреЙрд░реНрдо рдорд┐рд▓реЗрдЧрд╛: рднрд░реЗ рд╣реБрдП рдбреЗрдЯрд╛ рдХреЗ рдмрд┐рдирд╛ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред рдлреИрд╢рди рдХреА рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░реЗрдВ, рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ :)
Django
рдлреЙрд░реНрдо рд╣рдореЗрдВ рдЕрдЬрд╛рдХреНрд╕ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрд╛рд░ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЬреЛ рд╣рдо рдкрд╣рд▓реЗ рд╣реА js рдкрд░ рдЬрд╛рдПрдВрдЧреЗред рдЕрдЬрд╛рдХреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдлрд╝реЙрд▓рдмреИрдХ рд╡рд┐рдХрд▓реНрдк (рдЖрдк рд╣рдореЗрд╢рд╛ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдареАрдХ рд╣реИ? :) рд╣рдордиреЗ рдХреИрд╢ рдирд╣реАрдВ рдЬреАрддрд╛ред рдПрдХ рдХреНрд╖рдг рдЕрднреА рднреА рд╣реИ, рдЬрд┐рд╕ рд░реВрдк рдореЗрдВ рд╣рдо рдкреЛрд╕реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЬрдВрдЧрд▓ рдХреЗ рдХреБрдЫ рд╕рдВрд╕реНрдХрд░рдг (1.2?) POST рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ,
рд╕реАрдПрд╕рдЖрд░рдПрдл рд╣рдорд▓реЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реЛ рдЧрдИ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдХреЙрд▓рдмреИрдХ рдЕрдиреБрд░реЛрдз рд╣реИ: рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдФрд░ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрдЯрд╛ рдирд╣реАрдВред рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ
csrf_exempt рдбреЗрдХреЛрд░реЗрдЯрд░ рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рд╣реЛрдЧрд╛ред
рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд┐рдбрд▓рд╡реЗрдпрд░ рд▓рд┐рдЦреЗрдВрдЧреЗред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмрдВрдбрд▓ рдХреЗ рдХрд╛рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рд╣реИред рдпрд╣ dzhanga рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд░реЙрд▓реНрд╕ рдХреЛ рджреЗрдЦреЗ рдмрд┐рдирд╛, рдореИрдВ рдЗрд╕рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрд╛ред рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджреВрдВрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░ рджреВрдВрдЧрд╛ред рддреЛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдореЗрдВ:
import re from django.core.cache import cache from django.conf import settings class NginxMemCacheMiddleWare: def process_response(self, request, response): url = request.get_full_path() cache_it = not settings.DEBUG \ and request.method == 'GET' \ and response.status_code == 200 if cache_it: stoplist = [ x for x in settings.CACHE_IGNORE_REGEXPS if re.match(x, url) ] if not stoplist: cache.set(url, response.content) return response
рд╣рдо рдХреЗрд╡рд▓ GET рдХреИрд╢ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рдордп рдФрд░ 404 рдкрд░ рдХреИрд╢ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдХреНрдпреЛрдВ? рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдпрд╛ рд╣рдорд▓рд╛рд╡рд░ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдмреЙрдЯ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдмрд╛рдбрд╝ рдХреЗ рд╕рд╛рде рд╕реНрдореГрддрд┐ рдХреЛ рднрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЪрд▓рд┐рдП рд╡рд╛рдкрд╕ рд╡рд┐рдиреНрдпрд╛рд╕ рдкрд░ рдЖрддреЗ рд╣реИрдВ:
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'unix:/tmp/memcached.sock', 'KEY_PREFIX': 'YOURSITE', } }
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ: рдмреИрдХрдПрдВрдб рдореЗрдордХреЗрдб, рд╕реЙрдХреЗрдЯ рдФрд░ рдЙрдкрд╕рд░реНрдЧред рд╡реИрд╕реЗ, рдореИрдВ рд╕реЙрдХреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ pylibmc рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рд╡рд╣ рд╡рд╣рд╛рдВ рдХреБрдЫ рднреА рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡реИрд╕реЗ рднреАред рдореИрдВрдиреЗ рдЕрдЬрдЧрд░ рдХреЛ рдХрдВрдард╕реНрде рдХрд░ рд▓рд┐рдпрд╛ред
CACHE_IGNORE_REGEXPS = ( re.compile(r'/admin.*'), re.compile(r'/some_url.*'), )
рдпрд╣ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рд╖рд┐рджреНрдз URL рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдКрдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ MIDDLEWARE_CLASSES рдореЗрдВ рд╣рдорд╛рд░реЗ рдирдП рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред
рд╡реИрд╕реЗ, рдЖрдк рдПрдордХреИрд╢ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП
django-memcache-status рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╣ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ рдореЗрдордХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд╕реНрдореГрддрд┐ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреИрдорд╛рдирд╛ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╕реВрдЪрдирд╛рдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ :) рдпрд╣ рдлреНрд▓реИрдЯрдкреЗрдЬ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдмрд╛рдК рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЛ рдкрддрд▓рд╛ рдХрд░ рджреЗрдЧрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд╣ django-admin-tools рдХреЗ рд╕рд╛рде рджреЛрд╕реНрдд рдирд╣реАрдВ рд╣реИред
nginx
рд╕рд░реНрд╡рд░ рджреЗрд╡ рдХреЗ рд▓рд┐рдП рд╡рд┐рдиреНрдпрд╛рд╕, рдмрд╛рдж рдореЗрдВ рд╣рдо рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗ:
upstream dev { server 127.0.0.1:8000; } server { listen 80; server_name dev.local; charset utf-8; location ~^/(media|static) { root /home/user/project; access_log off; break; } location / { if ($request_method = POST) { proxy_pass http://dev; break; } default_type "text/html; charset=utf-8"; set $memcached_key "YOURSITE:1:$request_uri"; memcached_pass unix:/tmp/memcached.sock; error_page 404 502 = @fallback; } location @fallback { proxy_pass http://dev; } }
рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рджреЗрдЦреЗрдВ: '$ memcached_key рд╕реЗрдЯ рдХрд░реЗрдВ "рдЖрдкрдХрд╛: 1: $ request_uri"?' рдпрд╣реАрдВ рдкрд░ рд╕рд╛рд░рд╛ рдЬрд╛рджреВ рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬ рдХреИрд╢ рдореЗрдВ рдХреИрд╢ + рдкреВрд░реНрдг URL рдХреЗ рдореБрдЦреНрдп рдЙрдкрд╕рд░реНрдЧ + рд╕рдВрд╕реНрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреГрд╖реНрда рдХреЛ рдПрдХ рдмрд╛рд░ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, dzhanga рдЗрд╕реЗ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдореЗрдВ рдбрд╛рд▓ рджреЗрдЧрд╛, рдФрд░ рдЕрдЧрд▓реА рдмрд╛рд░ nzhinks рдХреЛ рдЗрд╕ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдорд┐рд▓реЗрдЧрд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк dzhanga рд╕рд╛рдЗрдЯ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рд╣рдо рддреБрд░рдВрдд рдореЗрдХреИрд╢ рдХреЛ рдЦреАрдВрдЪреЗ рдмрд┐рдирд╛ рдмреИрдХрдПрдВрдб рдкрд░ рд╡рд╛рдкрд╕ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВред рдПрдХ рдЕрдиреНрдп рдмрд┐рдВрджреБ: рдореИрдВ рдлреБрд▓рдмреИрдХ рдореЛрдб рдХреЗ рд▓рд┐рдП рдЧреЗрдЯ-рдХреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ js рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рд╣реИ (рдореЗрд░реЗ рдкрд╛рд╕ noscript: P) рд╣реИ: рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреИрдм рд╣реИрдВ, рдЗрд╕реАрд▓рд┐рдП uri рдХреЗ рдмрдЬрд╛рдп request_uri рдЧреЗрдЯ-рдХреАрдЬрд╝ рдХреЗ рдмрд┐рдирд╛ рдЕрдВрддрд┐рдо рдпреВрдЖрд░рдПрд▓ рд╣реИред
1.3 рдЬреЗрдВрдЧрд╛ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдкреВрд░реА рдХреБрдВрдЬреА рд╕реНрд╡рдпрдВ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕реЗрдЯ (), рдкрд╛рдиреЗ (), рд╣рдЯрд╛рдиреЗ () рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рднрд╛рдЧ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдмрд╛рдХреА рдЬрдВрдЧ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрджреНрд╡рд┐рддреАрдп рд╣рд┐рд╕реНрд╕рд╛ рдкреВрд░реНрдг рдкреГрд╖реНрда url рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рдЧрдЬрд╝рд┐рдк рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдирд╛рдЬрд╝рд┐рдВрдХреНрд╕ рдореЗрдореНрдХреИрд╢ рд╕реЗ рдХреНрдпрд╛ рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕реЗ рд╕рдВрдкреАрдбрд╝рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдПрдХ рдкреИрдЪ 4 рд╕рд╛рд▓ рдкрд╣рд▓реЗ Ninx рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 0.6 рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛ рдерд╛, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╛рд░реНрдб рдореЗрдВ 1. *ред рдпрджрд┐ рдЖрдк IE6 рдХреА рд╕реЗрд╡рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЬрдВрдЧ рдореЗрдВ рд╣реА рд╕рдВрдкреАрдбрд╝рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдкреАрдбрд╝рд┐рдд рд╕рд╛рдордЧреНрд░реА рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдЯрд╛рд░реНрдЯрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдмрд╛рдХреА рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП, рдЧрдЬрд╝рд┐рдк рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
Memecached
рдЪрд▓реЛ рд╕реЙрдХреЗрдЯ, /etc/memcached.conf рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдорд░рдг рдХрд░реЗрдВ:
рд╕реНрдерд┐рддрд┐-рд╡рд┐рдЬреНрдЮрд╛рди
рдореИрдВ IE рдХреЗ рд▓рд┐рдП jquery рдФрд░ html5shim рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред Google рдХреА рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░реЗрдВ, рдпрд╣ рд╣рдорд╛рд░реЗ рднрд╛рдЧреНрдп рдХреЛ рд╕реБрдЧрдо рдмрдирд╛рдПрдЧрд╛:
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
рд╣рдо
django-рдХрдВрдкреНрд░реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рдХреА рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдХреЛ
рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░реЗрдВрдЧреЗ ред рдореИрдВ рдХрдо рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ - django- рдХрдВрдкреНрд░реЗрд╕рд░ рдЗрд╕реЗ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рднреА рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдмрд╣реБрдд рдХрдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рд░реНрд╡рд░ рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд░ рдиреЛрдб.рдЬреЗрдПрд╕ рдбрд╛рд▓рдирд╛ рди рднреВрд▓реЗрдВред рд╕рднреА рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП, рдХрдВрдкреНрд░реЗрд╢рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рдЧреЛрдВрдж рдХрд░реЗрдВ: рдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде, рд╕реАрдПрд╕рдПрд╕ рд╕реА рд╕реАрдПрд╕рдПрд╕ред рд╕реМрдВрджрд░реНрдпред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдирдиреНрдп рдирд╛рдо рднреА рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдЖрдк рд╕реНрд░реЛрдд рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдирдП рдирд╛рдореЛрдВ рд╡рд╛рд▓реЗ рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдирдП рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧрд╛ рдФрд░ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рдкреВрдЫреЗрдЧрд╛ "рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдЕрдЬреАрдм рдХреНрдпреЛрдВ рджрд┐рдЦрддрд╛ рд╣реИ?"ред рд╡реИрд╕реЗ, Dzhanga 1.4 рднреА рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╕реНрдерд╛рдиреАрдп рдкрд░реАрдХреНрд╖рдг
рдареАрдХ рд╣реИ, рд╣рдо рд▓рдЧрднрдЧ рдкреВрд░реА рд╣реЛ рдЪреБрдХреА рд╣реИрдВред
рдЕрдкрдиреА рдкрд╕рдВрджреАрджрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд▓реЗрдВ, рд╕рд┐рд╕реНрдЯрдо рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рдФрд░ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рддреИрдирд╛рдд рдХрд░реЗрдВред рдЙрд╕реА рд╕рдордп, рд╣рдо рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗ: рдкрд╛рдЗрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рдЬреЛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рд╣рдореЗрд╢рд╛ рдХреА рддрд╛рд░реАрдЦ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ uwsgi рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд┐рдВрджреБ рд╣реИ: рд╡рд░реНрдЪреБрдЕрд▓ рдмреЙрдХреНрд╕ рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╣рд░реНрдЯреНрдЬ рдХреИрд╕реЗ рджрд┐рдпрд╛ рдЬрд╛рдП, рд╣рдо рдЦреБрдж рдХреЛ рдПрдХ рдХреЛрд░ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд▓реЗрдВрдЧреЗред
Uwsgi рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдкрд░, рдореИрдВ
рдбреЙрдХ рдФрд░
рд╡реЗрд▓рд┐рдирдХреНрд╕ рдкрд░ рдПрдХ рдЕрдиреНрдп
рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛
рд╣реВрдВ ред рдпрд╣рд╛рдБ рдЗрд╕реЗ рд╕рдордЭрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ: рдЧреЛрджреА рд╕реЗ рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВ, рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рдПрдВред рдПрдХрдорд╛рддреНрд░ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдЬреЛ рдореИрдВ рд╕реБрдЭрд╛ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╡рд░реНрдЪреБрдЕрдирд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкрд╛рдЗрдердирде рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╣реИрдВ - рдУрд╣, рдореИрдВрдиреЗ рдХрд┐рддрдирд╛ рд╕рдордп рдкрд╣рд▓реЗ рдорд╛рд░ рдбрд╛рд▓рд╛, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдбреЙрдХ рдХреЛ рдХреИрд╕реЗ рджреЗрдЦрдирд╛ рд╣реИред Google рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдирдирд╛: рдореИрдВ рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЛрдЧ рд╡рд┐рдХреГрдд рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рд░рд╛рд╕реНрддреЗ рдЬреЛрдбрд╝реЗрдВ, рдЖрджрд┐ред рдФрд░ рдмрд╕ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреБрд░рд╛рдирд╛ rtfmред
рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдирд┐рдЬреА рдореЛрдб рдЦреЛрд▓реЗрдВрдЧреЗ рддрд╛рдХрд┐ рд╕рдм рдХреБрдЫ рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реЛ, рд╣рдо рдпрд╣ рдорд╛рдкреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдкреЗрдЬ рдХрд┐рддрдирд╛ рдорд┐рд▓рддрд╛ рд╣реИ:
18 requests тЭШ 284.93KB transferred тЭШ 1.11s (onload: 1.12s, DOMContentLoaded: 979ms)
рдХреИрд╢ рдЪрд╛рд▓реВ рдХрд░реЗрдВ, рдХреИрд╢ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ, рдПрдХ рдирдпрд╛ рдирд┐рдЬреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓реЗрдВ:
18 requests тЭШ 298.09KB transferred тЭШ 291ms (onload: 293ms, DOMContentLoaded: 150ms)
рдЖрдЗрдП POST рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ (рдлрд┐рд░ рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреНрдпреЛрдВ)ред рдпрд╣ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП
get_or_create рдЪрд▓рддрд╛ рд╣реИ:
21 ms. .
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рд╡реГрджреНрдзрд┐ рд╣реИ, рд╕рд╛рде рд╣реА рдмрд┐рдирд╛ рдЧрдЬрд╝рд┐рдк рдХреЗ рдереЛрдбрд╝рд╛ рдмрдбрд╝рд╛ рд╡рдЬрди рд╣реИред
рдХреВрд▓? рдХреВрд▓ред
рдХреВрд▓рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдпрд╣рд╛рдБ рд╣рдо рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ:
- рд╕рдВрд╕реНрдХрд░рдг 1.3 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░, рдЬрдВрдЧрд▓ рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рднреА рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдХреЛ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ (рдкреНрд░рдмрдВрдзрдХреЛ рд╕рдВрдЧреНрд░рд╣рдгреАрдп) рд╡рд╛рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИ - рдЖрдк рдХрд┐рд╕реА рднреА рдмреЗрд╣рддрд░ рдХреА рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд╕рдм рдХреБрдЫ рд╕реНрдореГрддрд┐ рдореЗрдВ рд░рдЦреЛ;
- рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдЧрд╛, рдЗрд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рднреА рдбрд╛рд▓ рджреЗрдЧрд╛;
- рд╢рд╛рдВрддрд┐ рд╕реЗ рд╕реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрдВрдЪ рдкрд░ рдПрдХ рдШрдВрдЯреЗ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдирдХрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
рд╕реНрдЯреЗрдЯрд┐рдХреНрд╕ 2 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╣реИ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдмрдврд╝реЗрдЧрд╛ - рд╣рдо 5 рдПрдордмреА рд▓реЗрддреЗ рд╣реИрдВред рд╕реНрдореГрддрд┐ рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ:
рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореМрдЬреВрдж рд╕рднреА рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╣реЛрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕реНрдЯреЗрдЯрд┐рдХ рдореЗрдВ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕, рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдФрд░
рдбреЙрдХреНрд╕ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреЛ рдЬрдВрдШрд╛ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рдвреВрдВрдврдиреЗ рдФрд░ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧреАред рд╣рдо рдХрд░рддреЗ рд╣реИрдВ:
# . # , : STATIC_ROOT = COMPRESS_ROOT = '/mnt/project/static/' # (--noinput , - ): $ ./manage.py collectstatic --noinput -c # . : DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': '/mnt/project/db/db', } } # $ cp -r project/db /mnt/project/db/db # $ killall -HUP uwsgi
рд╣рдо рд╣реЛрдорд╡рд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдореБрдХреБрдЯ рдкрд░ рд╢реБрд░реБрдЖрдд рдФрд░ рдмреИрдХрдЕрдк рдореЗрдВ рдЗрд╕ рд╕рдм рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред
Njinks рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:
upstream project { server unix:/tmp/project.sock; } server { listen 80; server_name project.ru www.project.ru; if ($host = www.project.ru){ rewrite ^(.*)$ http://project.ru$1 permanent; } location /static { root /mnt/project/; access_log off; expires max; } location /media { root /project/; access_log off; expires 5d; } location / { include /etc/nginx/uwsgi_params; if ($request_method = POST) { uwsgi_pass project; } default_type "text/html; charset=utf-8"; set $memcached_key "project:1:$request_uri"; memcached_pass unix:/tmp/memcached.sock; error_page 404 502 = @fallback; } location @fallback { include /etc/nginx/uwsgi_params; uwsgi_pass project; } }
рдореАрдбрд┐рдпрд╛, рд╣рдо рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд╣реАрдВ рдереЗ рдЬрд╣рд╛рдВ рдпрд╣ рдерд╛ред рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдЪрд▓реЗ рдЧрдП, рдмрд╛рдХреА рд╣рдо рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВред
рдпрд╣ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди 'рдПрдХреНрд╕рдкрд╛рдпрд░ рдореИрдХреНрд╕' рдХреЛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ: рдпрд╣ рд╢рд╛рдВрдд рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдХрд▓ рд╣рдо рддрд╕реНрд╡реАрд░ рдХреЛ рдареАрдХ рдХрд░ рджреЗрдВ, рдореА? рдпрджрд┐ рдЖрдк django-рдХрдВрдкреНрд░реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ css рдореЗрдВ рдпрд╣ рджреЗрдЦрдХрд░ рд╕реБрдЦрдж рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛: /static/i/button-small.png?e59177bafc62ред
рдХреИрд╢ рдХреЗ рдмрд┐рдирд╛:
14 requests тЭШ 284.93KB transferred тЭШ 743ms (onload: 775ms, DOMContentLoaded: 708ms)
рдХреИрд╢ рдХреЗ рд╕рд╛рде:
14 requests тЭШ 298.09KB transferred тЭШ 174ms (onload: 175ms, DOMContentLoaded: 140ms)
рдкреЛрд╕реНрдЯ:
17ms
рдХреА рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИред рдЫреЛрдЯрд╛ рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдБред рдФрд░ рдЕрдзрд┐рдХ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдмреИрдХрдЕрдк
рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдЗрддрдирд╛ рдмреЗрдХрд╛рд░ рд╣реВрдВ рдХрд┐ рдореИрдВ рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди
рд╡реЗрдмрдбрд╛рд╡ рдпрд╣рд╛рдВ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд
рд╣реИ ред рдЖрдкрдХреЛ
MyDrive рдкрд░ рд╕рд░рд▓ рдФрд░ рдХрд╛рдлреА рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрджреЗрд╢
рдорд┐рд▓реЗрдВрдЧреЗ ред рд▓рд╛рдн рдЕрдм рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рднрд░рд╛ рд╣реИ - рдЪреБрдиреЗрдВред рдпрд╣ рд╣рдореЗрдВ рд╕реНрдХреНрд░реВ рдкрд░ рд╕реНрдерд╛рди рдмрдЪрд╛рдиреЗ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХреНрд▓рд╛рдЙрдб рдкрд░ рдмреИрдХрдЕрдк рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рддреЛ рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИ?
- рд╣рдордиреЗ sqlite рдХреЗ рд╕рд╛рде mysql рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрдЪрд╛рдпрд╛ (рдФрд░ рдЙрдиреНрд╣реЗрдВ db рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдбрд╛рд▓рдХрд░ рдереЛрдбрд╝рд╛ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ :), рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рддрдХ рд╣рдордиреЗ рдорд╣рд╛рди рдЧрддрд┐ рд╣рд╛рд╕рд┐рд▓ рдХреА;
- рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХреБрдХреА-рдЖрдзрд╛рд░рд┐рдд рд╕рддреНрд░ - рд╡реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЙрдирдХреЗ рднрдВрдбрд╛рд░рдг, рд╕рдлрд╛рдИ рдФрд░ рдЕрдиреНрдп рдмрдХрд╡рд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ;
- рд╣рдордиреЗ рдЕрдиреБрд╡рд╛рдж рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдХреЗ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЗ dzhanga рдХреЗ рдХрд╛рдо рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЧреИрд░-рдХреИрд╢реНрдб рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ;
- рдирд╛рдЬрд╝рд┐рдВрдХ, dzhanga рдФрд░ рдореЗрдордХреЗрдбреНрд╕ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ - рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреЗрдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП;
- рд╣рдордиреЗ рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдХреИрд╢ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ рд╣рдо рдмреЗрд╣рддрд░ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдЧрддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ;
- рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рд╛рдЗрдЯ рдФрд░ рднреА рддреЗрдЬрд╝реА рд╕реЗ рд▓реЛрдб рд╣реЛрдЧреА: рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдпрд╛ рд╕реНрдерд╛рдиреАрдп рдХреИрд╢ рд╕реЗ (рдХреБрдЫ рд▓реЛрдХрдкреНрд░рд┐рдп);
- рд╣рдордиреЗ рдЕрдкрдиреЗ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдХреЛ рдирд┐рдЪреЛрдбрд╝рд╛, рдЙрдиреНрд╣реЗрдВ рд╕реНрдореГрддрд┐ рдореЗрдВ рд░рдЦрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдирд╛рдЬрд╝рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджрд┐рдпрд╛;
- рдмреИрдХрдЕрдк? рдЬрд╛рдВрдЪ рдХреА рдЧрдИред
рддреЛ рдордЬрд╛рдХ рдХреНрдпрд╛ рд╣реИ?
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдерд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдареАрдХ рдЙрд╕реА рддрд░рд╣, рдЬреИрд╕реЗ рдХрд┐ рдмрд╛рд╣рд░ рдХреА рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рдФрд░ рдЖрджрдд рд╕реЗ рддрдВрдЧ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ред рдореВрд▓ рд░реВрдк рд╕реЗ, рд╕рдорд╛рдзрд╛рди рд╣рд╛рдирд┐рд░рд╣рд┐рдд рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рд╕реНрдкреЛрд░реНрдЯреА рд╣реИрдВ: рдЪрдпрдирд┐рдд рдХреИрд╢ рдЕрд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИ, рдФрд░ sqlite рдЖрдкрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдмреИрдХ рдСрдлрд┐рд╕)ред рдФрд░ рдореЗрд░реЗ рд╕рд╣реА рджрд┐рдорд╛рдЧ рдореЗрдВ рдореИрдВ рд╕рд░реНрд╡рд░ рдкрд░ рдирд╣реАрдВ рдмрдЪрд╛рдКрдВрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдм рдПрдХ рдкреНрд░рд╢рдВрд╕рдХ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред
рд▓рдЧрддрд╛ рддреЛ рд╕рдм рд╣реИред рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред