рд╕рд╛рдордиреЗ рдЕрдВрдд рдкреНрд░рджрд░реНрд╢рдиред рднрд╛рдЧ 2 - etagify рдХреЗ рд╕рд╛рде рдХреИрд╢ рдЧрддрд┐рд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА

рдПрдХ рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ: рдпрд╣ рдореЛрдЬрд╝рд┐рд▓рд╛ рдЖрдЗрдбреЗрдВрдЯрд┐рдЯреА рдЯреАрдо рдХреА Node.js рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЫрдард╛ рд▓реЗрдЦ рд╣реИ, рдЬреЛ рдкрд░реНрд╕реЛрдирд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред

рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рднреА рд▓реЗрдЦ:
  1. " Node.js рдореЗрдВ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЗ рд▓рд┐рдП рд╢рд┐рдХрд╛рд░ "
  2. "рд╣рдо рдиреЛрдб рдХреЛ рдиреЗрддреНрд░рдЧреЛрд▓рдХ рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ "
  3. " рд╣рдо рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕рддреНрд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ "
  4. " рдлреНрд░рдВрдЯ рдПрдВрдб рдкрд░рдлреЙрд░рдореЗрдВрд╕ред рдкрд╛рд░реНрдЯ 1 - рдХреЙрдирд╕реЗрдиреНрдЯреЗрд╢рди, рдХрдореНрдкреНрд░реЗрд╢рди, рдХреИрд╢рд┐рдВрдЧ "
  5. " рд╣рдо рдПрдХ рд╕рд░реНрд╡рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рд▓реЛрдб рдХреЗ рддрд╣рдд рдХреНрд░реИрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ "
  6. " рдлреНрд░рдВрдЯ рдПрдВрдб рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ред рдкрд╛рд░реНрдЯ 2 - рдХреИрдЯреЗрдЧрд┐рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд╛рдпрдирд╛рдорд┐рдХ рдХрдВрдЯреЗрдВрдЯ рдХреИрд╢рд┐рдВрдЧ "
  7. " рдиреЛрдб-рджреЛрд╖реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЫреЗрдбрд╝рдирд╛ "
  8. " рдлреНрд░рдВрдЯ рдПрдВрдб рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ред рдкрд╛рд░реНрдЯ 3 - рдлреЙрдиреНрдЯ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди "
  9. " рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдиреЛрдбреНрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рднрд╛рдЧ 1 "
  10. " рд╕реНрдерд╛рдиреАрдпрдХрд░рдг Node.js. рдЕрдиреБрдкреНрд░рдпреЛрдЧ рднрд╛рдЧ 2: рдЯреВрд▓рдХрд┐рдЯ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ "
  11. " рд╕реНрдерд╛рдиреАрдпрдХрд░рдг Node.js. рдЕрдиреБрдкреНрд░рдпреЛрдЧ рднрд╛рдЧ 3: рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг "
  12. " Awsbox - рдЕрдореЗрдЬрд╝рди рдХреНрд▓рд╛рдЙрдб рдкрд░ Node.js рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП Paas рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ "





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

рдпрд╣ рд▓реЗрдЦ etagify рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ, рдХрдиреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдорд┐рдбрд┐рд▓рд╡реЗрдпрд░ рдореЙрдбреНрдпреВрд▓ рдЬреЛ MD5 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИрд╢ рдкрд░ рдЖрдзрд╛рд░рд┐рдд ETag-on-the-fly рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрди рд╣реИрд╢ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред Etagify рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп рдЕрдирд╛рд╡рд╢реНрдпрдХ рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рдж рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдЕрдзрд┐рдХ рд╣реЛрдЧреА (рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╣рдореЗрдВ рдкреГрд╖реНрда рд▓реЛрдбрд┐рдВрдЧ рддреНрд╡рд░рдг 9% рддрдХ рдорд┐рд▓рд╛ рд╣реИ):

myapp = require('express').createServer(); myapp.use(require('etagify')()); ... app.get('/about', function(req, res) { res.etagify(); var body = ejs.render(template, options); res.send(body); }); 


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

рдХреИрд╕реЗ etagify рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ


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

Etagify рджреЛ рдЪреАрдЬреЗрдВ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рджрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╢рд░реНрдд GET рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╣реИрд╢ рдПрд░реЗ рдХреИрд╕реЗ рдмрдирддрд╛ рд╣реИ:

 //   etagify.js //     . //     : // '/about': { md5: 'fa88257b77...' } var etags = {}; var _end = res.end; res.end = function(body) { var hash = crypto.createHash('md5'); //    ,   if (body) { hash.update(body); } //      etags[req.path] = { md5: hash.digest('hex') }; //    _end.apply(res, arguments); } 

рдФрд░ рдпрд╣рд╛рдБ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХреА рд╣реИ:

 return function(req, res, next) { var cached = etags[req.path]['md5']; //      ETag,     if (cached) { res.setHeader('ETag', '"' + cached + '"' } //     GET, if (connect.utils.conditionalGET(req)) { // ,    If-None-Match  ETag if (!connect.utils.modified(req, res)) { //       . //    ETag     304 Not modified res.removeHeader('ETag'); return connect.utils.notModified(res); } } } 

рдХрдм рдФрд░ рдХрдм etagify рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ


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


рдорд╛рдк рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░


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

рдЫрд╡рд┐

рд╣рдордиреЗ awsbox рдкрд░ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ (рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЕрдВрддрд┐рдо рд▓реЗрдЦ рдореЗрдВ awsbox рдкрд░), рдлрд╝рд╛рдпрд░рдмрдЧ рдХреЛ рдЦреЛрд▓рд╛ рдФрд░ etagify рдХреЗ рд╕рд╛рде рдФрд░ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ "рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ" рдкреГрд╖реНрда рдХреА рд▓реЛрдбрд┐рдВрдЧ рдЧрддрд┐ рдХреЗ 50 рдорд╛рдк рдХрд┐рдП (рдкреГрд╖реНрда рд▓реЛрдбрд┐рдВрдЧ рд╕рдордп рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡ рдХрд╛ рдерд╛ред рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рд╡реЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдиреНрдп рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рд╡рд╣ рд╕рдордп рдЬрдм рддрдХ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдпрд╛ рдЬрдм рддрдХ рдкрд╣рд▓рд╛ рд╡рд┐рдЬреНрдЮрд╛рдкрди рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЖрджрд┐)ред

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

рд╣рдорд╛рд░реЗ рдЖрд╢реНрдЪрд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдкрд╛рдпрд╛ рдХрд┐ etagify рдкреГрд╖реНрда рд▓реЛрдб рд╕рдордп рдХреЛ 9% рдШрдЯрд╛рдХрд░ 1.65 (0.19 рдХреЗ рд╡рд┐рдЪрд▓рди рдХреЗ рд╕рд╛рде) рд╕реЗ 1.50 (0.13 рдХреЗ рд╡рд┐рдЪрд▓рди рдХреЗ рд╕рд╛рде) рд╕реЗрдХрдВрдб рдХрд░ рджреЗрддрд╛ рд╣реИред рдмреБрд░рд╛ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЙрд╕реЗ рдХрд┐рддрдиреЗ рдХрдо рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рдлрд┐рд░ рд╣рдордиреЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рдЯреА-рдЯреЗрд╕реНрдЯ рдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдХрд┐ рдХрд┐рд╕ рддрд░рд╣ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд┐рдирд╛ etagify рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреА-рдореВрд▓реНрдп 0.01 рд╕реЗ рдХрдо рд╣реЛ рдЧрдпрд╛, рдпрд╛рдиреА рд╕рдорд╛рди рд╡рд┐рддрд░рдг рдХреА рдЖрдХрд╕реНрдорд┐рдХ рдШрдЯрдирд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ 1% рд╕реЗ рдХрдо рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдорд╛рдкрд╛ рд╕реБрдзрд╛рд░ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдпрд╣рд╛рдВ рдЪрд╛рд░реНрдЯ рдкрд░ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЫрд╡рд┐

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




рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рднреА рд▓реЗрдЦ:
  1. " Node.js рдореЗрдВ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЗ рд▓рд┐рдП рд╢рд┐рдХрд╛рд░ "
  2. "рд╣рдо рдиреЛрдб рдХреЛ рдиреЗрддреНрд░рдЧреЛрд▓рдХ рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ "
  3. " рд╣рдо рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕рддреНрд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ "
  4. " рдлреНрд░рдВрдЯ рдПрдВрдб рдкрд░рдлреЙрд░рдореЗрдВрд╕ред рдкрд╛рд░реНрдЯ 1 - рдХреЙрдирд╕реЗрдиреНрдЯреЗрд╢рди, рдХрдореНрдкреНрд░реЗрд╢рди, рдХреИрд╢рд┐рдВрдЧ "
  5. " рд╣рдо рдПрдХ рд╕рд░реНрд╡рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рд▓реЛрдб рдХреЗ рддрд╣рдд рдХреНрд░реИрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ "
  6. " рдлреНрд░рдВрдЯ рдПрдВрдб рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ред рдкрд╛рд░реНрдЯ 2 - рдХреИрдЯреЗрдЧрд┐рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд╛рдпрдирд╛рдорд┐рдХ рдХрдВрдЯреЗрдВрдЯ рдХреИрд╢рд┐рдВрдЧ "
  7. " рдиреЛрдб-рджреЛрд╖реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЫреЗрдбрд╝рдирд╛ "
  8. " рдлреНрд░рдВрдЯ рдПрдВрдб рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ред рдкрд╛рд░реНрдЯ 3 - рдлреЙрдиреНрдЯ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди "
  9. " рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдиреЛрдбреНрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рднрд╛рдЧ 1 "
  10. " рд╕реНрдерд╛рдиреАрдпрдХрд░рдг Node.js. рдЕрдиреБрдкреНрд░рдпреЛрдЧ рднрд╛рдЧ 2: рдЯреВрд▓рдХрд┐рдЯ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ "
  11. " рд╕реНрдерд╛рдиреАрдпрдХрд░рдг Node.js. рдЕрдиреБрдкреНрд░рдпреЛрдЧ рднрд╛рдЧ 3: рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг "
  12. " Awsbox - рдЕрдореЗрдЬрд╝рди рдХреНрд▓рд╛рдЙрдб рдкрд░ Node.js рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП Paas рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ "

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


All Articles