рдХреИрд╢-jsред рдХреИрд╢рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди

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

рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:
function loadData(url, fn) { ajax.get(url, function (err, result) { //      var data = '...'; fn(null, data); }); } 

рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж:
 var cache = {}; function loadCacheData(url, fn) { var cacheData = cache[url]; //  if (cacheData) { fn(null, cacheData); } else { ajax.get(url, function (err, result) { //      var data = '...'; //   cache[url] = data; fn(null, data); }); } 


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

рдЗрд╕рдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрд╡рд░рдг рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬреЛ loadData рдХреЛ loadCacheData рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ред
рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
 function loadData(url, fn) { ajax.get(url, function (err, result) { //      var data = '...'; fn(null, data); }); } var loadCacheData = cache(loadData); 

рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд "loadCacheData" рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдХреИрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рд╛рде рд╣реА рдХреИрд╢ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

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

рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЛ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

1. рдХреИрд╢ рдлреНрд▓рд╢ рдХрд░реЗрдВред
 var loadCacheData = cache(loadData); loadCacheData.clearCache(); 


2. рдХреИрд╢ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рдирдХрд╛рд▓ рд╕реЗрдЯ рдХрд░реЗрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ 1 рд╡рд░реНрд╖ рд╣реИред
 var loadCacheData = cache({ expire: 10 * 1000 }, loadData); 


3. рдЕрдзрд┐рдХрддрдо рдХреИрд╢ рдЖрдХрд╛рд░ (рдХреИрд╢ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ) рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ 10 рд╣реИред
 var loadCacheData = cache({ max: 10 }, loadData); 


4. рдХреИрд╢ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдердб рдЪреБрдирдирд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ "рдПрдкреНрд▓рд┐рдХреЗрд╢рди" рд╣реИред
рдРрдк - рдореЗрдореЛрд░реА рдореЗрдВ рдХреИрд╢ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВред
рд▓реЛрдХрд▓ - рдХреИрд╢ рдХреЛ рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдЗрдЯ рдХреЗ рд╕рднреА рдкреЗрдЬреЛрдВ рдХреЗ рдмреАрдЪ рд╕реБрд▓рдн рд╣реИред
 var loadCacheData = cache({ storage: 'local' }, loadData); 

"рд╕реНрдерд╛рдиреАрдп" рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдк рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ "cacheKey" рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд╕реНрдерд╛рдиреАрдпрд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдХреБрдВрдЬреА рдХрд╛ рдирд╛рдо рдЬрд╣рд╛рдВ рдХреИрд╢ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред

5. рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдХреИрд╢ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЛ рдЗрдирд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ред
 var loadCacheData = cache({ storage: new MyCacheStorage() }, loadData); 

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, MyCacheStorage () рдХреЛ рддреАрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
"рдЬрд╛рдУ (рдХреБрдВрдЬреА, fn);" - рд╡рд┐рдзрд┐ рдХреБрдВрдЬреА рд╕реЗ рдХреИрд╢ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЪрдпрди рдХрд░рддреА рд╣реИред
"рд╕реЗрдЯ (рдХреА, рд╡реИрд▓, рдПрдлрдПрди);" - рд╡рд┐рдзрд┐ рдХреИрд╢ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред
"рд╕реНрдкрд╖реНрдЯ (fn);" - рд╡рд┐рдзрд┐ рдХреИрд╢ рдХреЛ рдлреНрд▓рд╢ рдХрд░рддреА рд╣реИред
"Fn" рдПрдХ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реНрдХ "рддреНрд░реБрдЯрд┐" рдФрд░ рджреВрд╕рд░рд╛ "рдкрд░рд┐рдгрд╛рдо" (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рд▓реЗрддрд╛ рд╣реИред

"рдХреИрд╢-рдЬреЗрдПрд╕" рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╕реАрдорд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ "рдХреИрд╢реНрдб" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: "рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдореАрдЯрд░ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП!"

рдХрд╛рд░реНрдпрд╕реВрдЪреА:


рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ ред

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


All Articles