рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рд╕рд░реНрд╡рд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рджреМрд░рд╛рди рдбреЗрдЯрд╛ рд╕рдВрдкреАрдбрд╝рди

рдХреНрдпрд╛ рдЖрдк рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдЙрдиреНрд╣реЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд╛рдкрд╕ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рд╣рд╛рдВ, рддрд╛рдХрд┐ рдЗрд╕реЗ рддреЗрдЬреА рд╕реЗ рднреЗрдЬрд╛ рдЬрд╛рдП рдФрд░ рдПрдХ http рдЕрдиреБрд░реЛрдз рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдП?

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



рдХрд╛рд░реНрдп рд╡рд┐рд╡рд░рдг


рд╣реИрдмрд░реВрд╕рд░ рдРрдиреЗрдЯреЛ рдиреЗ рдореБрдЭрд╕реЗ рд╢рд┐рдХрд╛рдпрдд рдХреА рдХрд┐ Yandex.Direct рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдЖрдкрд╕ рдореЗрдВ рдХреАрд╡рд░реНрдбреНрд╕ рдХреЗ рдЗрдВрдЯрд░рд╕реЗрдХреНрд╢рди рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдмреАрдЪ, рдХрд╛рд░реНрдп рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдФрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдереЛрдбрд╝реА рд╕реЗрд╡рд╛ рдХреА рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреА рд╣реИред

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

рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рд╣рдореЗрдВ рджреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реБрдИрдВ:
  1. рдзреАрд░реЗ-рдзреАрд░реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп, рдбреЗрдЯрд╛ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  2. рдЕрдХреНрд╕рд░ рдбреЗрдЯрд╛ рдирдЧрдиреЗрдХреНрд╕ / рдЕрдкрд╛рдЪреЗ / php / etc рд╕реАрдорд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдПрдХ рднреА рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред


рдирд┐рд░реНрдгрдп


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

рдЖрдЗрдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрджрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдЪрд░рдг 0: рд╕реНрд░реЛрдд рдбреЗрдЯрд╛

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

рдбрд╛рдЙрдирд▓реЛрдб рдХреЛрдб рдФрд░ рдбреЗрдЯрд╛ рд╕рдмрдорд┐рд╢рди рдлрдВрдХреНрд╢рди
<script> function setDemoData(data) { window.initialData = data; } function send(data) { var http = new XMLHttpRequest(); http.open('POST', window.location.href, true); http.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); http.onreadystatechange = function() { if (http.readyState == 4) { if (http.status === 200) { // xhr success } else { // xhr error; } } }; http.send(data); } </script> <script src="http://nodge.ru/habr/demoData.js"></script> 

рдЖрдЗрдП рдбреЗрдЯрд╛ рдХреЛ рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдбреАрдмрдЧрд░ рдХреЛ рджреЗрдЦреЗрдВ:

 var data = JSON.stringify(initialData); send(data); 



рдПрдХ рд╕рд░рд▓ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд╕рд╛рде, рдЕрдиреБрд░реЛрдз рдорд╛рддреНрд░рд╛ 9402 Kb рд╣реИред рдмрд╣реБрдд, рд╣рдо рдХрд╛рдЯ рджреЗрдВрдЧреЗред

рдЪрд░рдг 1: рдбреЗрдЯрд╛ рд╕рдВрдкреАрдбрд╝рди

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдкреАрдбрд╝рди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИрдВред рд╕рдВрдкреАрдбрд╝рди рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрдкрдиреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд┐рд╕реА рднреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдПрд▓рдЬреЗрдбрдбрдмреНрд▓реНрдпреВ , рдбреАрдлреНрд▓реИрдЯ , рдПрд▓рдЬреЗрдбрдПрдордП рдФрд░ рдЕрдиреНрдпред рд╡рд┐рдХрд▓реНрдк рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ред рдЗрд╕реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрд╕рд╛рдиреА рд╕реЗ рдЧреАрдереВрдм рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ: рдПрдХ , рджреЛ , рддреАрди ред

рд╣рдордиреЗ рд╕рднреА рддреАрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди PHP рдХреЗ рд╕рд╛рде рд╣рдо рдХреЗрд╡рд▓ LZW рджреЛрд╕реНрдд рдмрдирд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

LZW рд╕рдВрдкреАрдбрд╝рди рд╕рдорд╛рд░реЛрд╣
 var LZW = { compress: function(uncompressed) { "use strict"; var i, l, dictionary = {}, w = '', k, wk, result = [], dictSize = 256; // initial dictionary for (i = 0; i < dictSize; i++) { dictionary[String.fromCharCode(i)] = i; } for (i = 0, l = uncompressed.length; i < l; i++) { k = uncompressed.charAt(i); wk = w + k; if (dictionary.hasOwnProperty(wk)) { w = wk; } else { result.push(dictionary[w]); dictionary[wk] = dictSize++; w = k; } } if (w !== '') { result.push(dictionary[w]); } result.dictionarySize = dictSize; return result; } }; 

рдЪреВрдВрдХрд┐ LZW рдХреЛ ASCII рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдгреЛрдВ рд╕реЗ рдмрдЪ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрддреЗ рд╣реИрдВ:

 var data = JSON.stringify(initialData); data = stringEscape(data); data = LZW.compress(data); send(data.join('|')); 

рдЕрдиреБрд░реЛрдз рдорд╛рддреНрд░рд╛ - 6079 Kb (рд╕рдВрдкреАрдбрд╝рди 65%), 3323 Kb рдмрдЪрд╛рдпрд╛ред рдЕрдзрд┐рдХ рдкрд░рд┐рд╖реНрдХреГрдд рд╕рдВрдкреАрдбрд╝рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмреЗрд╣рддрд░ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред

рдЪрд░рдг 2: рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░реЗрдВ

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

 //  16-  32-       var type = data.dictionarySize > 65535 ? 'Uint32Array' : 'Uint16Array', count = data.length, buffer = new ArrayBuffer((count+2) * window[type].BYTES_PER_ELEMENT), //        bufferBase = new Uint8Array(buffer, 0, 1), //          LZW bufferDictSize = new window[type](buffer, window[type].BYTES_PER_ELEMENT, 1), bufferData = new window[type](buffer, window[type].BYTES_PER_ELEMENT*2, count); bufferBase[0] = type === 'Uint32Array' ? 32 : 16; //    bufferDictSize[0] = data.dictionarySize; //    LZW bufferData.set(data); //   data = new Blob([buffer]); //  ArrayBuffer  Blob    XHR send(data); 

рдЕрдиреБрд░реЛрдз рдорд╛рддреНрд░рд╛ - 3686 Kb (рд╕рдВрдкреАрдбрд╝рди 39%), 6079 Kb рдмрдЪрд╛рдпрд╛ред рдЕрдм рдЕрдиреБрд░реЛрдз рдХрд╛ рдЖрдХрд╛рд░ рдЖрдзрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рджреЛрдиреЛрдВ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдЪрд░рдг 3: рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдгред

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

PHP рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЙрджрд╛рд╣рд░рдг
 <?php $data = readBinaryData(file_get_contents('php://input')); $data = lzw_decompress($data); $data = unicode_decode($data); $data = json_decode($data, true); function readBinaryData($buffer) { $bufferType = unpack('C', $buffer); //   -   if ($bufferType[1] === 16) { $dataSize = 2; $unpackModifier = 'v'; } else { $dataSize = 4; $unpackModifier = 'V'; } $buffer = substr($buffer, $dataSize); // remove type from buffer $data = new SplFixedArray(strlen($buffer)/$dataSize); $stepCount = 2500; //    2500  for ($i=0, $l=$data->getSize(); $i<$l; $i+=$stepCount) { if ($i + $stepCount < $l) { $bytesCount = $stepCount * $dataSize; $currentBuffer = substr($buffer, 0, $bytesCount); $buffer = substr($buffer, $bytesCount); } else { $currentBuffer = $buffer; $buffer = ''; } $dataPart = unpack($unpackModifier.'*', $currentBuffer); $p = $i; foreach ($dataPart as $item) { $data[$p] = $item; $p++; } } return $data; } function lzw_decompress($compressed) { $dictSize = 256; //   -   $dictionary = new SplFixedArray($compressed[0]); for ($i = 0; $i < $dictSize; $i++) { $dictionary[$i] = chr($i); } $i = 1; $w = chr($compressed[$i++]); $result = $w; for ($l = count($compressed); $i < $l; $i++) { $entry = ''; $k = $compressed[$i]; if (isset($dictionary[$k])) { $entry = $dictionary[$k]; } else { if ($k === $dictSize) { $entry = $w . $w[0]; } else { return null; } } $result .= $entry; $dictionary[$dictSize++] = $w .$entry[0]; $w = $entry; } return $result; } function replace_unicode_escape_sequence($match) { return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE'); } function unicode_decode($str) { return preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $str); } 

рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рдЙрддрдирд╛ рд╣реА рд╕рд░рд▓ рд╣реИред

рдЪрд░рдг 4: рд╢реНрд░рдорд┐рдХ

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

рдЪрд░рдг 5: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди

рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрд░реЛрдХреНрдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб IE6 = рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛)
рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЯрд╛рдЗрдк рдПрд░рд┐рдпрд░ , рдПрдХреНрд╕рдПрдЪрдЖрд░ 2 рдФрд░ рд╡рд░реНрдХрд░реНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред
рд╕рдорд░реНрдерд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреА рд╕реВрдЪреА: IE10 +, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 21+, рдХреНрд░реЛрдо 26+, рд╕рдлрд╛рд░реА 5.1+, рдУрдкреЗрд░рд╛ 15+, рдЖрдИрдУрдПрд╕ 5+, рдПрдВрдбреНрд░реЙрдЗрдб 4.0+ (рд╡рд░реНрдХрд░реНрд╕ рдХреЗ рдмрд┐рдирд╛)ред

рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП, рдЖрдк рдореЙрдбрд░реНрдирд┐рдЬрд╝реНрд░, рдпрд╛ рдЗрд╕ рдХреЛрдб рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдЖрд╡рд╢реНрдпрдХ рдорд╛рдирдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛
 var compressionSupported = (function() { var check = [ 'Worker', 'Uint16Array', 'Uint32Array', 'ArrayBuffer', // Typed Arrays 'Blob', 'FormData' // xhr2 ]; var supported = true; for (var i = 0, l = check.length; i<l; i++) { if (!(check[i] in window)) { supported = false; break; } } return supported; })(); 

рдЙрджрд╛рд╣рд░рдг


рд▓реЗрдЦ рдХрд╛ рдХреЛрдб JS Bin: рдкреГрд╖реНрда , рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреЗрдЬ рдЦреЛрд▓реЗрдВ, рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рддреАрди рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рджреЗрдЦреЗрдВред

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

рдирд┐рд╖реНрдХрд░реНрд╖


рдмреЗрд╢рдХ, рдпрд╣ рд╡рд┐рдзрд┐ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЬреАрд╡рди рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред рдХрднреА-рдХрднреА рд╕рдВрдкреАрдбрд╝рди рдХреЗ рдмрдЬрд╛рдп рдХрдИ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЖрд╕рд╛рди / рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрддрд╛ рд╣реИред рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╢реБрд░реВ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛ рд╣реЛ, рддреЛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдФрд░ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдмрд╕ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдПрд░рд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╕рд╛рд░рд╛рдВрд╢:


рдореБрдЭреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдФрд░ рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕реБрдзрд╛рд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдореИрдВрдиреЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдЯрд╛рдЗрдкреЛрд╕ рдХреА рдЬрд╛рдВрдЪ рдХреА, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдорд╛рдорд▓реЗ рдореЗрдВ - рдирд┐рдЬреА рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред рд╕рднреА рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИред

рдЕрджреНрдпрддрди 1:
рдЕрд▓рдЧ-рдЕрд▓рдЧ, рдпрд╣ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рдиреЗ рд▓рд╛рдпрдХ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рд╛рд░реВрдк (рдЬреЗрдкреАрдИрдЬреА, рдкреАрдПрдирдЬреА, рдЬреАрдЖрдИрдПрдл) рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдкреАрдбрд╝рд┐рдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд░реВрдк (рдмреЗрд╕ 64) рдореЗрдВред рдореИрдВрдиреЗ рдХреИрдирд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ , рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдмреЗрд╕ 64 рдХреЛ рдмреВрдБрдж рд░реВрдкрд╛рдВрддрд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЕрджреНрдпрддрди 2:
рдпрджрд┐ рдЖрдк рдПрд╕рдПрд╕рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝реЗрдВред SSL рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рджреЛ-рддрд░рдлрд╝рд╛ рд╕рдВрдкреАрдбрд╝рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЕрджреНрдпрддрди 3:
рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдгреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд64ред рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдирд┐рдХрд▓рд╛ред рдЙрдкрднреЛрдХреНрддрд╛ , seriyPS рдФрд░ TolTol рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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


All Articles