{"id":54566,"date":"2019-12-29T00:00:00","date_gmt":"2019-12-28T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/samostoyatelnyj-hosting-storonnih-resursov-horoshij-plohoj-zloj"},"modified":"2020-02-18T14:02:35","modified_gmt":"2020-02-18T11:02:35","slug":"samostoyatelnyj-hosting-storonnih-resursov-horoshij-plohoj-zloj","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/samostoyatelnyj-hosting-storonnih-resursov-horoshij-plohoj-zloj","title":{"rendered":"G\u0103zduirea independent\u0103 a resurselor externe: bun\u0103, rea, neagr\u0103","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u00cen ultimii ani, tot mai multe platforme pentru optimizarea proiectelor frontend ofer\u0103 op\u021biuni de auto-g\u0103zduire sau de proxy pentru resurse externe. Akamai permite definirea <noindex><a rel=\"nofollow\" href=\"https:\/\/community.akamai.com\/customers\/s\/article\/5-ways-to-prevent-slow-3rd-party-front-end-services?language=en_US\">parametrelor specifice<\/a><\/noindex> pentru URL-urile create \u00een mod autonom. Cloudflare dispune de tehnologia Edge Workers. Fasterzine poate <noindex><a rel=\"nofollow\" href=\"https:\/\/www.fasterize.com\/en\/blog\/https-the-impact-on-your-loading-times\/\">rescrie<\/a><\/noindex> URL-urile de pe pagini astfel \u00eenc\u00e2t acestea s\u0103 indice resurse externe aflate pe domeniul principal al site-ului.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/481574\/\"><img decoding=\"async\" alt=\"G\u0103zduirea independent\u0103 a resurselor externe: bun\u0103, rea, neagr\u0103\" src=\"\/wp-content\/uploads\/2019\/12\/61f87db89ba8c5f4bf030a4004df56f3.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Dac\u0103 \u0219ti\u021bi c\u0103 serviciile externe utilizate \u00een proiectul dumneavoastr\u0103 nu se schimb\u0103 foarte des \u0219i c\u0103 procesul de livrare a acestora c\u0103tre clien\u021bi poate fi \u00eembun\u0103t\u0103\u021bit, atunci cu siguran\u021b\u0103 v\u0103 g\u00e2ndi\u021bi la proxy-ul acestor servicii. Prin aceast\u0103 abordare, pute\u021bi \u201eaproxima\u201d aceste resurse de utilizatori \u0219i ob\u021bine un control mai complet asupra caching-ului lor pe partea clientului. \u00cen plus, aceasta ajut\u0103 la protejarea utilizatorilor de probleme cauzate de \u201ec\u0103derea\u201d serviciului extern sau degradarea performan\u021bei acestuia.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Avantaj: cre\u0219terea performan\u021bei<\/h2>\n<p>\nAuto-g\u0103zduirea resurselor externe \u00eembun\u0103t\u0103\u021be\u0219te performan\u021ba \u00eentr-un mod destul de evident. Browser-ul nu trebuie s\u0103 fac\u0103 o nou\u0103 solicitare DNS, nu trebuie s\u0103 stabileasc\u0103 o conexiune TCP \u0219i s\u0103 efectueze un handshake TLS pe un domeniu extern. Modul \u00een care auto-g\u0103zduirea resurselor externe influen\u021beaz\u0103 performan\u021ba poate fi observat compar\u00e2nd cele dou\u0103 ilustra\u021bii urm\u0103toare.<\/p>\n<p><img decoding=\"async\" alt=\"G\u0103zduirea independent\u0103 a resurselor externe: bun\u0103, rea, neagr\u0103\" src=\"\/wp-content\/uploads\/2019\/12\/ee0a0ccb712a873d10b8de0dbc7ef84a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Resurse externe sunt \u00eenc\u0103rcate din surse externe (preluat <noindex><a rel=\"nofollow\" href=\"https:\/\/csswizardry.com\/2019\/05\/self-host-your-static-assets\/\">de aici<\/a><\/noindex>)<\/i><\/p>\n<p><img decoding=\"async\" alt=\"G\u0103zduirea independent\u0103 a resurselor externe: bun\u0103, rea, neagr\u0103\" src=\"\/wp-content\/uploads\/2019\/12\/e9ee0b858dbb1aa7c6476d8bf954fc62.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Resurse externe sunt stocate acolo unde sunt \u0219i celelalte materiale ale site-ului (preluat <noindex><a rel=\"nofollow\" href=\"https:\/\/csswizardry.com\/2019\/05\/self-host-your-static-assets\/\">de aici<\/a><\/noindex>)<\/i><\/p>\n<p>Situa\u021bia este \u00eembun\u0103t\u0103\u021bit\u0103 \u0219i de faptul c\u0103 browser-ul va folosi capabilit\u0103\u021bile de multiplexare \u0219i prioritizare a datelor pe o conexiune HTTP\/2 deja stabilit\u0103 cu domeniul principal.<\/p>\n<p>Dac\u0103 nu g\u0103zdui\u021bi resurse externe, acestea, fiind \u00eenc\u0103rcate de pe un domeniu diferit de cel principal, nu vor putea fi prioritizate. Acest lucru va duce la o competi\u021bie \u00eentre ele pentru l\u0103\u021bimea de band\u0103 a clientului. Aceasta poate cauza ca timpul de \u00eenc\u0103rcare al materialelor critice pentru formarea paginii s\u0103 fie mult mai mare dec\u00e2t timpul ce ar putea fi ob\u021binut \u00een condi\u021bii ideale. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=nOW-i6bbRdo\">Iat\u0103<\/a><\/noindex> prezentarea despre prioritizarea HTTP\/2, \u00een care totul este explicat foarte clar.<\/p>\n<p>Se poate presupune c\u0103 utilizarea atributelor \u00een linkurile c\u0103tre resurse externe <code>preconnect<\/code> va ajuta la rezolvarea problemei. Totu\u0219i, dac\u0103 vor exista prea multe linkuri c\u0103tre domenii diferite, acest lucru ar putea, de fapt, supra\u00eenc\u0103rca linia de comunica\u021bie \u00een cel mai critic moment.<\/p>\n<p>Dac\u0103 g\u0103zduie\u0219ti resurse externe pe cont propriu \u2014 po\u021bi controla modul \u00een care aceste resurse sunt livrate clientului. Mai exact, este vorba despre urm\u0103toarele:<\/p>\n<ul>\n<li>Po\u021bi asigura aplicarea unui algoritm de comprimare a datelor, cel mai potrivit pentru fiecare browser (Brotli\/gzip).<\/li>\n<li>Po\u021bi cre\u0219te timpul de cache pentru resurse, care de obicei, chiar \u0219i la cei mai cunoscu\u021bi furnizori, nu este foarte mare (de exemplu, valoarea corespunz\u0103toare pentru eticheta GA este setat\u0103 la 30 de minute).<\/li>\n<\/ul>\n<p>\nPo\u021bi chiar s\u0103 extinzi timpul TTL pentru resurs\u0103, de exemplu, p\u00e2n\u0103 la un an, integr\u00e2nd materialele corespunz\u0103toare \u00een strategia ta de gestionare a cache-ului (hash-uri URL, versiuni \u0219i a\u0219a mai departe). Despre aceasta vom discuta mai jos.<\/p>\n<h3>\u258dProtec\u021bie \u00eempotriva \u00eentreruperilor \u00een func\u021bionarea serviciilor externe sau a deconect\u0103rii acestora<\/h3>\n<p>\nUn alt aspect interesant al g\u0103zduirii autonome a resurselor externe este c\u0103 aceasta permite atenuarea riscurilor legate de \u00eentreruperile serviciilor externe. S\u0103 presupunem c\u0103 solu\u021bia extern\u0103 pe care o folose\u0219ti pentru testarea A\/B-urilor este implementat\u0103 sub form\u0103 de script blocant, care este \u00eenc\u0103rcat \u00een sec\u021biunea de header a paginii. Acest script se \u00eencarc\u0103 \u00eencet. Dac\u0103 \u00eenc\u0103rcarea scriptului respectiv e\u0219ueaz\u0103 \u2014 pagina va fi goal\u0103. Dac\u0103 \u00eenc\u0103rcarea sa dureaz\u0103 foarte mult timp \u2014 pagina va ap\u0103rea cu un \u00eent\u00e2rziere semnificativ\u0103. Sau, s\u0103 presupunem c\u0103 \u00een proiect se folose\u0219te o bibliotec\u0103, care este \u00eenc\u0103rcat\u0103 dintr-o resurs\u0103 CDN extern\u0103. S\u0103 ne imagin\u0103m c\u0103 aceast\u0103 resurs\u0103 a suferit o defec\u021biune sau a fost blocat\u0103 \u00eentr-o anumit\u0103 \u021bar\u0103. O astfel de situa\u021bie va duce la perturbarea logicii de func\u021bionare a site-ului.<\/p>\n<p>Pentru a afla cum func\u021bioneaz\u0103 site-ul t\u0103u \u00een condi\u021bii de inaccesibilitate a unei resurse externe, po\u021bi folosi sec\u021biunea SPOF de pe <noindex><a rel=\"nofollow\" href=\"https:\/\/www.webpagetest.org\/\">webpagetest.org<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"G\u0103zduirea independent\u0103 a resurselor externe: bun\u0103, rea, neagr\u0103\" src=\"\/wp-content\/uploads\/2019\/12\/0ffa0b44054ccd16bab33c6b7beff049.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Sec\u021biunea SPOF de pe webpagetest.org<\/i><\/p>\n<h3>\u258dCe zici de problemele de cache ale materialelor \u00een browsere? (sugestie: este un mit)<\/h3>\n<p>\nS-ar putea s\u0103 crede\u021bi c\u0103 utilizarea CDN-urilor publice va conduce automat la o performan\u021b\u0103 mai bun\u0103 a resurselor, deoarece aceste servicii dispun de re\u021bele de calitate \u0219i sunt distribuite \u00een \u00eentreaga lume. Dar, de fapt, lucrurile sunt pu\u021bin mai complicate.<\/p>\n<p>S\u0103 presupunem c\u0103 avem mai multe site-uri diferite: website1.com, website2.com, website3.com. Toate aceste site-uri utilizeaz\u0103 biblioteca jQuery. O conect\u0103m prin CDN, de exemplu \u2014 googleapis.com. Ne a\u0219tept\u0103m ca browserul s\u0103 \u00eencarce \u0219i s\u0103 cacheze biblioteca o singur\u0103 dat\u0103, apoi s\u0103 o foloseasc\u0103 pentru toate cele trei site-uri. Acest lucru ar putea reduce \u00eenc\u0103rc\u0103tura pe re\u021bea. Poate c\u0103 va economisi undeva \u0219i va ajuta la \u00eembun\u0103t\u0103\u021birea performan\u021bei resurselor. Dintr-o perspectiv\u0103 practic\u0103, aspectele sunt diferite. De exemplu, Safari a implementat o func\u021bionalitate numit\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/webkit.org\/blog\/7675\/intelligent-tracking-prevention\/\">Intelligent Tracking Prevention<\/a><\/noindex>: \u00een cache se folosesc chei duble, bazate pe sursa documentului \u0219i pe sursa resursei externe. <noindex><a rel=\"nofollow\" href=\"https:\/\/andydavies.me\/blog\/2018\/09\/06\/safari-caching-and-3rd-party-resources\/\">Iat\u0103<\/a><\/noindex> un articol bun despre acest subiect.<\/p>\n<p>Studiile vechi <noindex><a rel=\"nofollow\" href=\"https:\/\/yuiblog.com\/blog\/2007\/01\/04\/performance-research-part-2\/\">Yahoo<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/code.facebook.com\/posts\/964122680272229\/web-performance-cache-efficiency-exercise\/\">Facebook<\/a><\/noindex>, precum \u0219i mai recente <noindex><a rel=\"nofollow\" href=\"https:\/\/discuss.httparchive.org\/t\/analyzing-resource-age-by-content-type\/1659\">o cercetare<\/a><\/noindex> Pola Calvano, arat\u0103 c\u0103 resursele nu sunt stocate \u00een cache-urile browserelor at\u00e2t de mult timp cum ne-am a\u0219tepta: \u201eExist\u0103 o discrepan\u021b\u0103 serioas\u0103 \u00eentre timpul de caching al resurselor proprii \u0219i al celor externe din proiect. Este vorba despre CSS \u0219i fonturi web. \u00cen special, perioada de caching pentru 95% dintre fonturile proprii dep\u0103\u0219e\u0219te o s\u0103pt\u0103m\u00e2n\u0103, \u00een timp ce perioada de caching pentru 50% dintre fonturile externe este mai mic\u0103 de o s\u0103pt\u0103m\u00e2n\u0103! Acest lucru ofer\u0103 dezvoltatorilor web motive \u00eentemeiate pentru a g\u0103zdui singuri fi\u0219ierele de fonturi!\u201d<\/p>\n<p>Prin urmare, dac\u0103 ve\u021bi g\u0103zdui materiale externe, nu ve\u021bi observa probleme de performan\u021b\u0103 cauzate de caching-ul browserului.<\/p>\n<p>Acum, c\u00e2nd am examinat avantajele g\u0103zduirii proprii a resurselor externe, s\u0103 discut\u0103m despre cum s\u0103 facem distinc\u021bia \u00eentre o implementare bun\u0103 a acestei abord\u0103ri \u0219i una slab\u0103.<\/p>\n<h2>Slab: diavolul st\u0103 \u00een detalii<\/h2>\n<p>\nMutarea resurselor externe pe propriul domeniu nu poate fi realizat\u0103 automat, f\u0103r\u0103 a se asigura c\u0103 aceste resurse sunt corect cache-uite.<\/p>\n<p>Una dintre problemele principale aici este timpul de caching. De exemplu, informa\u021biile despre versiuni sunt incluse \u00een numele scripturilor externe cam a\u0219a: <code>jquery-3.4.1.js<\/code>. Acest fi\u0219ier nu se va schimba \u00een viitor, astfel c\u0103 nu va provoca probleme cu caching-ul s\u0103u.<\/p>\n<p>Dar, dac\u0103 nu se aplic\u0103 un anumit sistem de versionare pentru gestionarea fi\u0219ierelor, scripturile cached, a c\u0103ror con\u021binut se schimb\u0103 f\u0103r\u0103 a modifica numele fi\u0219ierului, pot deveni dep\u0103\u0219ite. Acest lucru poate deveni o problem\u0103 serioas\u0103, deoarece, de exemplu, nu permite actualizarea automat\u0103 a scripturilor cu corec\u021bii de securitate care ar trebui s\u0103 ajung\u0103 la clien\u021bi c\u00e2t mai repede posibil. Dezvoltatorul va trebui s\u0103 depun\u0103 eforturi pentru a actualiza aceste scripturi \u00een cache. \u00cen plus, acest lucru poate provoca erori \u00een func\u021bionarea aplica\u021biei, datorit\u0103 faptului c\u0103 codul utilizat de client din cache difer\u0103 de versiunea actualizat\u0103 a codului, care este a\u0219teptat\u0103 de partea de server a proiectului.<\/p>\n<p>Adev\u0103rat, c\u00e2nd vorbim despre materiale care se actualizeaz\u0103 frecvent (manageri de etichete, solu\u021bii pentru testare A\/B), caching-ul lor pe CDN devine o sarcin\u0103 complex\u0103, de\u0219i realizabil\u0103. Servicii precum Commanders Act, solu\u021bii pentru gestionarea etichetelor, folosesc webhooks la publicarea noilor versiuni. Aceasta permite organizarea \u0219tergerii cache-ului pe CDN sau, \u0219i mai bine, posibilitatea de a solicita actualizarea hash-ului sau versiunii URL-ului.<\/p>\n<h3>\u258dLivrarea adaptiv\u0103 a materialelor c\u0103tre clien\u021bi<\/h3>\n<p>\n\u00cen plus, atunci c\u00e2nd discut\u0103m despre caching, trebuie s\u0103 lu\u0103m \u00een considerare \u0219i faptul c\u0103 set\u0103rile de caching utilizate pe CDN pot s\u0103 nu fie potrivite pentru anumite resurse externe. De exemplu, aceste resurse pot folosi tehnologia sniffing a agentului utilizator (user agent sniffing, adaptive serving) pentru a livra versiunile materialelor optimizate specific pentru browserele respective. Aceste tehnologii, pentru a determina capacit\u0103\u021bile browserului, se bazeaz\u0103 pe expresii regulate sau pe o baz\u0103 de date care colecteaz\u0103 informa\u021bii despre antetele HTTP. <code>User-Agent<\/code>. Odat\u0103 ce afl\u0103 cu ce browser au de-a face, \u00eei livreaz\u0103 materiale adaptate acestuia.<\/p>\n<p>Aici putem men\u021biona dou\u0103 servicii. Primul \u2014 googlefonts.com. Al doilea \u2014 polyfill.io. Serviciul Google Fonts ofer\u0103, pentru o anumit\u0103 resurs\u0103, diferit cod CSS, \u00een func\u021bie de capacit\u0103\u021bile browserului (oferind linkuri c\u0103tre resurse woff2, folosind <code>unicode-range<\/code>).<\/p>\n<p>Iat\u0103 rezultatele c\u00e2torva solicit\u0103ri c\u0103tre Google Fonts, efectuate din browsere diferite.<\/p>\n<p><img decoding=\"async\" alt=\"G\u0103zduirea independent\u0103 a resurselor externe: bun\u0103, rea, neagr\u0103\" src=\"\/wp-content\/uploads\/2019\/12\/5078ce754cc324e42261a1749e96a445.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Rezultatul cererii c\u0103tre Google Fonts, efectuat din Chrome<\/i><\/p>\n<p><img decoding=\"async\" alt=\"G\u0103zduirea independent\u0103 a resurselor externe: bun\u0103, rea, neagr\u0103\" src=\"\/wp-content\/uploads\/2019\/12\/103de3c523a05fdfa230ada49842f124.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Rezultatul cererii c\u0103tre Google Fonts, efectuat din IE10<\/i><\/p>\n<p>Polyfill.io furnizeaz\u0103 browserului doar acele polyfill-uri de care acesta are nevoie. Acest lucru se face din motive de performan\u021b\u0103.<\/p>\n<p>De exemplu, s\u0103 ne uit\u0103m la ce se va \u00eent\u00e2mpla dac\u0103 efectu\u0103m urm\u0103toarea cerere din diferite browsere: <noindex><a rel=\"nofollow\" href=\"https:\/\/polyfill.io\/v3\/polyfill.js?features=default\">https:\/\/polyfill.io\/v3\/polyfill.js?features=default<\/a><\/noindex><\/p>\n<p>Ca r\u0103spuns la o astfel de cerere, efectuat\u0103 din IE10, se va primi 34 Kb de date. R\u0103spunsul efectuat din Chrome va fi gol.<\/p>\n<h2>Zevil: unele considera\u021bii legate de confiden\u021bialitate<\/h2>\n<p>\nAcest punct este ultimul ca ordine, dar nu \u0219i ca importan\u021b\u0103. Este vorba despre faptul c\u0103 g\u0103zduirea independent\u0103 a resurselor externe pe domeniul principal al proiectului sau pe subdomeniul s\u0103u poate compromite confiden\u021bialitatea utilizatorilor \u0219i poate avea un impact negativ asupra proiectului web principal.<\/p>\n<p>Dac\u0103 sistemul dumneavoastr\u0103 CDN este configurat gre\u0219it, totul se poate termina cu trimiterea cookie-urilor dumneavoastr\u0103 c\u0103tre un serviciu extern. Dac\u0103 la nivelul CDN nu exist\u0103 o filtrare corect\u0103, cookie-urile de sesiune, care \u00een mod normal nu pot fi utilizate \u00een JavaScript (cu atributul <code>httponly<\/code>), pot fi trimise c\u0103tre un host str\u0103in.<\/p>\n<p>Exact aceasta se poate \u00eent\u00e2mpla cu trackerele, precum Eulerian sau Criteo. Trackerele externe ar fi putut seta un identificator unic \u00een cookie-uri. Acestea, dac\u0103 erau incluse \u00een materialele site-urilor, puteau citi identificatorul la discre\u021bia lor \u00een timpul interac\u021biunii utilizatorului cu diferite resurse web.<\/p>\n<p>\u00cen zilele noastre, majoritatea browserelor includ protec\u021bie \u00eempotriva unor astfel de comportamente ale trackerelor. Ca urmare, acum trackerele folosesc tehnologia <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/nextdns\/cname-cloaking-the-dangerous-disguise-of-third-party-trackers-195205dc522a\">CNAME Cloaking<\/a><\/noindex>, masc\u00e2ndu-se sub propriile scripts ale diferitelor proiecte. A\u0219adar, trackerele sugereaz\u0103 proprietarilor de site-uri s\u0103 adauge \u00een set\u0103rile lor CNAME pentru un anumit domeniu, a c\u0103rui adres\u0103 arat\u0103 de obicei ca un set aleator de caractere.<\/p>\n<p>De\u0219i nu este recomandat s\u0103 face\u021bi cookie-urile site-ului disponibile pentru toate subdomeniile (de exemplu \u2014 *.website.com), pe multe site-uri acest lucru se face. \u00cen acest caz, aceste cookie-uri sunt trimise automat c\u0103tre un tracker extern mascat. Ca rezultat, nu mai putem vorbi despre confiden\u021bialitate.<\/p>\n<p>\u00cen plus, acela\u0219i lucru se \u00eent\u00e2mpl\u0103 \u0219i cu antetele HTTP <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.google.com\/web\/updates\/2015\/09\/automating-resource-selection-with-client-hints\">Client-Hints<\/a><\/noindex>, care sunt trimise doar domeniului principal, deoarece acestea pot fi utilizate pentru a crea <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/httpwg\/http-extensions\/issues\/767\">amprentei digitale<\/a><\/noindex> a utilizatorului. Asigura\u021bi-v\u0103 c\u0103 serviciul CDN pe care \u00eel folosi\u021bi filtreaz\u0103 corect aceste antete.<\/p>\n<h2>Concluzii<\/h2>\n<p>\nDac\u0103 inten\u021biona\u021bi s\u0103 implementa\u021bi \u00een cur\u00e2nd g\u0103zduirea independent\u0103 a resurselor ter\u021be, permite\u021bi-mi s\u0103 v\u0103 ofer c\u00e2teva sfaturi:<\/p>\n<ul>\n<li>G\u0103zdui\u021bi cele mai importante biblioteci JS, fonturi \u0219i fi\u0219iere CSS pe serverele proprii. Acest lucru va reduce riscul de c\u0103dere a site-ului sau de sc\u0103dere a performan\u021bei din cauza faptului c\u0103 o resurs\u0103 esen\u021bial\u0103 pentru func\u021bionarea site-ului devine indisponibil\u0103 din cauza unui serviciu ter\u021b.<\/li>\n<li>\u00cenainte de a cache-ui resursele ter\u021be pe CDN, asigura\u021bi-v\u0103 c\u0103 fi\u0219ierele lor sunt denumite folosind un sistem de versionare sau c\u0103 ave\u021bi control asupra ciclului de via\u021b\u0103 al acestor resurse, reset\u00e2nd manual sau automat cache-ul CDN la publicarea unei versiuni noi a scriptului.<\/li>\n<li>Fi\u021bi foarte aten\u021bi la set\u0103rile CDN, serverului proxy \u0219i cache-ului. Acest lucru v\u0103 va ajuta s\u0103 preveni\u021bi trimiterea cookie-urilor proiectului dvs. sau a anteturilor <code>Client-Hints<\/code> serviciilor ter\u021be.<\/li>\n<\/ul>\n<p>\n<b>Stima\u021bi cititori!<\/b> Oferi\u021bi pe serverele dumneavoastr\u0103 materiale externe care sunt extrem de importante pentru func\u021bionarea proiectelor dumneavoastr\u0103?<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ruvds.com\/ru-rub\"><img decoding=\"async\" alt=\"G\u0103zduirea independent\u0103 a resurselor externe: bun\u0103, rea, neagr\u0103\" src=\"\/wp-content\/uploads\/2019\/12\/30212b2008a5ed0b51a4469d885b9e91.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/ruvds.com\/ru-rub\/#order\"><img decoding=\"async\" alt=\"G\u0103zduirea independent\u0103 a resurselor externe: bun\u0103, rea, neagr\u0103\" src=\"\/wp-content\/uploads\/2019\/12\/7117788d4bd0ef7de47d98a372b72ae7.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/481574\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0433\u043e\u0434\u044b \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0443 \u0438\u043b\u0438 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. Akamai \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 URL. \u0423 Cloudflare \u0435\u0441\u0442\u044c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f Edge Workers. Fasterzine \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c URL \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u0431\u044b \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0435\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u0435 \u0441\u0430\u0439\u0442\u0430. \u0415\u0441\u043b\u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-54566","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0433\u043e\u0434\u044b \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0443 \u0438\u043b\u0438 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/samostoyatelnyj-hosting-storonnih-resursov-horoshij-plohoj-zloj\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432: \u0445\u043e\u0440\u043e\u0448\u0438\u0439, \u043f\u043b\u043e\u0445\u043e\u0439, \u0437\u043b\u043e\u0439 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0433\u043e\u0434\u044b \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0443 \u0438\u043b\u0438 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/samostoyatelnyj-hosting-storonnih-resursov-horoshij-plohoj-zloj\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-28T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:35+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47G\u0103zduirea independent\u0103 a resurselor ter\u021be: bun\u0103, rea, ur\u00e2t\u0103 | ProHoster","description":"\u00cen ultimii ani, din ce \u00een ce mai multe platforme pentru optimizarea proiectelor front-end ofer\u0103 oportunit\u0103\u021bi pentru g\u0103zduirea independent\u0103 sau pentru proxy-ing-ul resurselor ter\u021be.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/samostoyatelnyj-hosting-storonnih-resursov-horoshij-plohoj-zloj","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432: \u0445\u043e\u0440\u043e\u0448\u0438\u0439, \u043f\u043b\u043e\u0445\u043e\u0439, \u0437\u043b\u043e\u0439 | ProHoster","og:description":"\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0433\u043e\u0434\u044b \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0443 \u0438\u043b\u0438 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/samostoyatelnyj-hosting-storonnih-resursov-horoshij-plohoj-zloj","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-28T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:35+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54566","title":null,"description":null,"keywords":null,"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 11:52:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:02:46","updated":"2026-08-11 12:50:28","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/54566","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=54566"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/54566\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=54566"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=54566"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=54566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}