рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ рдЬреЛ рдореБрдЭреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреИрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░рд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рдерд╛ред рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╣рд┐рдЪрдХрд┐рдЪрд╛рд╣рдЯ рдХреЗ, рдореИрдВрдиреЗ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдкреВрд░рдХ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рддрд╛рдХрд┐ рд╕рд░реНрд╡рд░ рдХреЛ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЬрд╛рдВрдЪрд╛ рдЧрдпрд╛ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдерд╛ред
рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:
function loadData(url, fn) { ajax.get(url, function (err, result) {
рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж:
var cache = {}; function loadCacheData(url, fn) { var cacheData = cache[url];
рдЗрд╕ рд╢реИрд▓реА рдореЗрдВ рдХреБрдЫ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реБрдП, рдореИрдВ рдКрдм рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреИрд╢ рдХреЛ рд░реАрд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдереЛрдбрд╝рд╛ рд╕рд╛ "рдЧреВрдЧрд▓" (рд╢рд╛рдпрдж Google рдЦрд░рд╛рдм рдерд╛), рдореБрдЭреЗ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рдорд┐рд▓рд╛ рдЬреЛ рдЖрдкрдХреЛ рд╣рд╛рде рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрдВрджреЛрд▓рди рдХреЗ рд╕рд╛рде рдореМрдЬреВрджрд╛ рдХреЛрдб рдореЗрдВ рдХреИрд╢ рдХреЛ рдкреЗрдВрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рдЗрд╕рдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрд╡рд░рдг рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬреЛ loadData рдХреЛ loadCacheData рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ред
рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
function loadData(url, fn) { ajax.get(url, function (err, result) {
рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд "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" рдПрдХ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реНрдХ "рддреНрд░реБрдЯрд┐" рдФрд░ рджреВрд╕рд░рд╛ "рдкрд░рд┐рдгрд╛рдо" (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рд▓реЗрддрд╛ рд╣реИред
"рдХреИрд╢-рдЬреЗрдПрд╕" рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╕реАрдорд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ "рдХреИрд╢реНрдб" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: "рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдореАрдЯрд░ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП!"
рдХрд╛рд░реНрдпрд╕реВрдЪреА:
- рдЕрдм "рдХреИрд╢" рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╕реНрдерд╛рди рдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ
- SessionStorage рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреИрд╢ рдЬреЛрдбрд╝реЗрдВ
- рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд┐рдХрд▓реНрдк, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдХреИрд╢ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
- рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред рд╡рд░реНрддрдорд╛рди рдореЗрдВ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкрд╛рд░реНрд╕ / рд╕реНрдЯреНрд░рд┐рдВрдЧ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, getItem / setItem / removeItem рдХреА рд╕реНрдерд╛рдиреАрдпрд╕реНрдЯреЛрд░ рдСрдмреНрдЬреЗрдХреНрдЯ
- ? рдиреЛрдбрдЬ рдкрд░ рдкреЛрд░реНрдЯ (рд╕рдВрджреЗрд╣ рдореЗрдВ)
рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ
ред