{"id":30281,"date":"2019-10-31T21:34:39","date_gmt":"2019-10-31T18:34:39","guid":{"rendered":"https:\/\/prohoster.info\/blog\/preload-prefetch-i-drugie-tegi\/"},"modified":"2019-10-31T21:34:39","modified_gmt":"2019-10-31T18:34:39","slug":"preload-prefetch-i-drugie-tegi","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/preload-prefetch-i-drugie-tegi","title":{"rendered":"Preload, prefetch \u0219i alte etichete","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Exist\u0103 <noindex><a rel=\"nofollow\" href=\"http:\/\/3perf.com\/talks\/web-perf-101\">multe metode de \u00eembun\u0103t\u0103\u021bire a performan\u021bei web<\/a><\/noindex>. Una dintre ele este pre\u00eenc\u0103rcarea con\u021binutului necesar mai t\u00e2rziu. Prefetching CSS, randarea preliminar\u0103 a \u00eentregii pagini sau rezolvarea numelui de domeniu. Facem totul dinainte, iar apoi afi\u0219\u0103m rezultatul instantaneu! Sun\u0103 bine.<\/p>\n<p>\u0218i mai bine, c\u0103 este foarte simplu de implementat. Cinci etichete &lt;link rel&gt; dau browserului comanda de a efectua ac\u021biuni preliminare:<\/p>\n<pre><code class=\"xml\">&lt;link rel=\"prefetch\" href=\"\/style.css\" as=\"style\" \/&gt;\n&lt;link rel=\"preload\" href=\"\/style.css\" as=\"style\" \/&gt;\n\n&lt;link rel=\"preconnect\" href=\"https:\/\/example.com\" \/&gt;\n&lt;link rel=\"dns-prefetch\" href=\"https:\/\/example.com\" \/&gt;\n\n&lt;link rel=\"prerender\" href=\"https:\/\/example.com\/about.html\" \/&gt;<\/code><\/pre>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nS\u0103 vorbim pe scurt despre ce fac \u0219i c\u00e2nd s\u0103 le folose\u0219ti.<\/p>\n<p>Mergi la: <noindex><a rel=\"nofollow\" href=\"#preload\">preload<\/a><\/noindex> \u00b7 <noindex><a rel=\"nofollow\" href=\"#prefetch\">prefetch<\/a><\/noindex> \u00b7 <noindex><a rel=\"nofollow\" href=\"#preconnect\">preconnect<\/a><\/noindex> \u00b7 <noindex><a rel=\"nofollow\" href=\"#dns-prefetch\">dns-prefetch<\/a><\/noindex> \u00b7 <noindex><a rel=\"nofollow\" href=\"#prerender\">prerender<\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"preload\"><\/a><\/noindex><\/p>\n<h1>preload<\/h1>\n<p>\n<code>&lt;link rel=\"preload\"&gt;<\/code> spune browserului s\u0103 descarce \u0219i s\u0103 cacheze resursa c\u00e2t mai cur\u00e2nd posibil (de exemplu, un script sau o foaie de stil). Este util atunci c\u00e2nd resursa va fi necesar\u0103 \u00een c\u00e2teva secunde dup\u0103 ce pagina a fost \u00eenc\u0103rcat\u0103 \u2014 \u0219i vrei s\u0103 accelerezi procesul.<\/p>\n<p>Browserul nu face nimic cu resursa dup\u0103 desc\u0103rcare. Scripturile nu sunt executate, foile de stil nu sunt aplicate. Resursa este pur \u0219i simplu cache-at\u0103 \u0219i pus\u0103 la dispozi\u021bie imediat la cerere.<\/p>\n<h3>Sintaxa<\/h3>\n<p><\/p>\n<pre><code class=\"xml\">&lt;link rel=\"preload\" href=\"\/style.css\" as=\"style\" \/&gt;<\/code><\/pre>\n<p>\n<code>href<\/code> indic\u0103 resursa pe care vrei s\u0103 o descarci.<\/p>\n<p><code> as<\/code> poate fi orice fel de resurs\u0103 care poate fi desc\u0103rcat\u0103 \u00een browser:<\/p>\n<ul>\n<li><code>style<\/code> pentru foile de stil,\n<\/li>\n<li><code>script<\/code> pentru scripturi,\n<\/li>\n<li><code>font<\/code> pentru fonturi,\n<\/li>\n<li><code>fetch<\/code> pentru resurse desc\u0103rcate folosind <code>fetch()<\/code> sau <code>XMLHttpRequest<\/code>,\n<\/li>\n<li>lista complet\u0103 vezi <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTML\/Preloading_content#What_types_of_content_can_be_preloaded\">pe MDN<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nEste important s\u0103 specifici atributul <code>as<\/code> \u2014 ajut\u0103 browserul s\u0103 prioritizeze corect \u0219i s\u0103 planifice desc\u0103rcarea.<\/p>\n<h3>C\u00e2nd s\u0103 folose\u0219ti<\/h3>\n<p>\nFolose\u0219te pre\u00eenc\u0103rcarea atunci c\u00e2nd resursa va fi necesar\u0103 foarte cur\u00e2nd. De exemplu:<\/p>\n<ul>\n<li>Fonturi personalizate dintr-un fi\u0219ier extern:\n<pre><code class=\"xml\">&lt;!-- index.html --&gt;\n&lt;link rel=\"stylesheet\" href=\"index.css\" \/&gt;\n\/* index.css *\/\n@font-face {\n  src: url('comic-sans.woff2') format('woff2');\n}<\/code><\/pre>\n<p>\nImplicit <code>comic-sans.woff2<\/code> va \u00eencepe s\u0103 se \u00eencarce doar dup\u0103 ce a fost \u00eenc\u0103rcat\u0103 \u0219i analizat\u0103 <code>index.css<\/code>. Pentru a nu a\u0219tepta at\u00e2t de mult, po\u021bi \u00eenc\u0103rca fontul mai devreme folosind <code>&lt;link rel=\"preload\"&gt;<\/code>:<\/p>\n<pre><code class=\"xml\">&lt;link rel=\"preload\" href=\"comic-sans.woff2\" as=\"font\" \/&gt;<\/code><\/pre>\n<\/li>\n<li>Dac\u0103 \u00ee\u021bi \u00eemp\u0103r\u021bi stilurile conform abord\u0103rii <noindex><a rel=\"nofollow\" href=\"https:\/\/3perf.com\/talks\/web-perf-101\/#css-block-rendering-1\">Critical CSS<\/a><\/noindex> \u00een dou\u0103 p\u0103r\u021bi, critic\u0103 (pentru randarea imediat\u0103) \u0219i non-critic\u0103:\n<pre><code class=\"xml\">&lt;style&gt;\n\/* Inlined critical styles *\/\n&lt;\/style&gt;\n\n&lt;script&gt;\n\/* Custom JS that starts downloading non-critical styles *\/\nloadCSS('\/app\/non-critical.css');\n&lt;\/script&gt;<\/code><\/pre>\n<p>\nCu aceast\u0103 abordare, stilurile non-critice vor \u00eencepe s\u0103 se \u00eencarce doar atunci c\u00e2nd JavaScript-ul este executat, ceea ce poate avea loc dup\u0103 c\u00e2teva secunde de la randare. \u00cen loc s\u0103 a\u0219tepta\u021bi JS, folosi\u021bi <code>&lt;link rel=\"preload\"&gt;<\/code>, pentru a \u00eencepe \u00eenc\u0103rcarea mai devreme:<\/p>\n<pre><code class=\"xml\">\/* Stiluri critice \u00eencorporate *\/<\/code><\/pre>\n<\/li>\n<\/ul>\n<p>\n<b>Nu abuzati de pre\u00eenc\u0103rcare<\/b>. Dac\u0103 \u00eenc\u0103rca\u021bi totul, site-ul nu va accelera magic, dimpotriv\u0103, va \u00eempiedica browserul s\u0103 planifice corect sarcinile.<\/p>\n<p><b> Nu confunda\u021bi cu prefetching-ul<\/b>. Nu utiliza\u021bi <code>&lt;link rel=\"preload\"&gt;<\/code>, dac\u0103 nu ave\u021bi nevoie de resurs\u0103 imediat dup\u0103 \u00eenc\u0103rcarea paginii. Dac\u0103 va fi necesar\u0103 mai t\u00e2rziu, de exemplu, pentru pagina urm\u0103toare, atunci folosi\u021bi <code>&lt;link rel= \"prefetch\"&gt;<\/code>.<\/p>\n<h3>Detalii<\/h3>\n<p>\n<b>Aceasta este o etichet\u0103 obligatorie<\/b> pentru executarea de c\u0103tre browser (dac\u0103 o suport\u0103), spre deosebire de toate celelalte etichete  legate de pre\u00eenc\u0103rcare. Browserul trebuie s\u0103 \u00eencarce resursa specificat\u0103 \u00een <code>&lt;link rel=\"preload\"&gt;<\/code>. \u00cen alte cazuri, acesta poate ignora pre\u00eenc\u0103rcarea, de exemplu, dac\u0103 lucreaz\u0103 pe o conexiune lent\u0103.<\/p>\n<p><b>Priorit\u0103\u021bile<\/b>. Browserul atribuie, \u00een mod obi\u0219nuit, diferite priorit\u0103\u021bi diferitelor resurse (stiluri, scripturi, fonturi etc.) pentru a \u00eenc\u0103rca mai \u00eent\u00e2i cele mai importante resurse. \u00cen acest caz, browserul determin\u0103 prioritatea pe baza atributului <code>as<\/code>. Pentru browserul Chrome, pute\u021bi consulta <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/document\/d\/1bCDuq9H1ih9iNjgzyAL0gpwNFiEP4TZS-YLRp_RuMlc\/edit#\">tabela complet\u0103 a priorit\u0103\u021bilor<\/a><\/noindex>.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/i2\/bf\/vi\/i2bfvijtqhb3wt6cnkcskwc55ew.png\"><img decoding=\"async\" alt=\"Preload, prefetch \u0219i alte etichete\" src=\"\/wp-content\/uploads\/2019\/03\/3d66bce7749d647e16d842958f56ff3c.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"prefetch\"><\/a><\/noindex><\/p>\n<h1>prefetch<\/h1>\n<p>\n<code>&lt;link rel= \"prefetch\"&gt;<\/code> cere browserului s\u0103 \u00eencarce \u0219i s\u0103 cacheze resursa (de exemplu, un script sau o foaie de stil) \u00een fundal. \u00cenc\u0103rcarea se face cu o prioritate sc\u0103zut\u0103, astfel \u00eenc\u00e2t s\u0103 nu interfereze cu resursele mai importante. Este util dac\u0103 resursa va fi necesar\u0103 pe pagina urm\u0103toare \u0219i dori\u021bi s\u0103 o cachea\u021bi \u00een avans.<\/p>\n<p>\u00centre timp, browserul nu face nimic cu resursa dup\u0103 desc\u0103rcare. Scripturile nu sunt executate, foile de stil nu sunt aplicate. Resursa este pur \u0219i simplu cache-uit\u0103 \u0219i oferit\u0103 imediat la cerere.<\/p>\n<h3>Sintaxa<\/h3>\n<p><\/p>\n<pre><code class=\"xml\">&lt;link rel=\"prefetch\" href=\"\/style.css\" as=\"style\" \/&gt;<\/code><\/pre>\n<p>\n<code>href<\/code> indic\u0103 resursa pe care vrei s\u0103 o descarci.<\/p>\n<p><code> as<\/code> poate fi orice fel de resurs\u0103 care poate fi desc\u0103rcat\u0103 \u00een browser:<\/p>\n<ul>\n<li><code>style<\/code> pentru foile de stil,\n<\/li>\n<li><code>script<\/code> pentru scripturi,\n<\/li>\n<li><code>font<\/code> pentru fonturi,\n<\/li>\n<li><code>fetch<\/code> pentru resurse desc\u0103rcate folosind <code>fetch()<\/code> sau <code>XMLHttpRequest<\/code>,\n<\/li>\n<li>lista complet\u0103 vezi <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTML\/Preloading_content#What_types_of_content_can_be_preloaded\">pe MDN<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nEste important s\u0103 specifici atributul <code>as<\/code>\u00a0\u2014 aceasta ajut\u0103 browserul s\u0103 stabileasc\u0103 corect priorit\u0103\u021bile \u0219i s\u0103 planifice \u00eenc\u0103rcarea.<\/p>\n<h3>C\u00e2nd s\u0103 folose\u0219ti<\/h3>\n<p>\n<b>Pentru a \u00eenc\u0103rca resurse din alte pagini<\/b>, dac\u0103 ave\u021bi nevoie de o resurs\u0103 de pe o alt\u0103 pagin\u0103 \u0219i dori\u021bi s\u0103 o pre\u00eenc\u0103rca\u021bi pentru a accelera randarea acelei pagini. De exemplu:<\/p>\n<ul>\n<li>Ave\u021bi un magazin online \u0219i 40% din utilizatori pleac\u0103 de pe pagina principal\u0103 pe pagina produsului. Folosi\u021bi <code>&lt;link rel= \"prefetch\"&gt;<\/code>, \u00eenc\u0103rc\u00e2nd fi\u0219iere CSS \u0219i JS pentru redarea paginilor cu produsul.\n<\/li>\n<li>Ave\u021bi o aplica\u021bie pe o singur\u0103 pagin\u0103, iar paginile diferite \u00eencarc\u0103 pachete diferite. C\u00e2nd utilizatorul acceseaz\u0103 o pagin\u0103, pute\u021bi \u00eenc\u0103rca \u00een avans pachetele pentru toate paginile la care aceasta se refer\u0103.<\/li>\n<\/ul>\n<p>\n<b>Este probabil ca aceast\u0103 etichet\u0103 s\u0103 poat\u0103 fi utilizat\u0103 \u00een siguran\u021b\u0103 \u00een orice volum<\/b>. Browserele, de obicei, planific\u0103 prefetch cu prioritate mai mic\u0103, astfel \u00eenc\u00e2t s\u0103 nu deranjeze pe nimeni. Ridica\u021bi-v\u0103 doar c\u0103 se consum\u0103 traficul utilizatorului, ceea ce poate costa bani.<\/p>\n<p><b>Nu pentru cereri urgente<\/b>. Nu utiliza\u021bi <code>&lt;link rel= \"prefetch\"&gt;<\/code>, c\u00e2nd resursa va fi necesar\u0103 \u00een c\u00e2teva secunde. \u00cen acest caz, aplica\u021bi <code>&lt;link rel=\"preload\"&gt;<\/code>.<\/p>\n<h3>Detalii<\/h3>\n<p>\n<b>O etichet\u0103 op\u021bional\u0103<\/b>. Browserul nu este obligat s\u0103 urmeze aceast\u0103 instruc\u021biune, poate s\u0103 o ignore, de exemplu, pe un conexiune lent\u0103.<\/p>\n<p><b>Prioritate \u00een Chrome<\/b>. \u00cen Chrome <code>&lt;link rel= \"prefetch\"&gt;<\/code> de obicei se execut\u0103 cu prioritate minim\u0103 (vezi <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/document\/d\/1bCDuq9H1ih9iNjgzyAL0gpwNFiEP4TZS-YLRp_RuMlc\/edit\">tabela complet\u0103 a priorit\u0103\u021bilor<\/a><\/noindex>), adic\u0103 dup\u0103 ce a \u00eenc\u0103rcat tot ce este altceva.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"preconnect\"><\/a><\/noindex><\/p>\n<h1>preconnect<\/h1>\n<p>\n<code>&lt;link rel= \"preconnect\"&gt;<\/code> solicit\u0103 browserului s\u0103 se conecteze \u00een avans la domeniu atunci c\u00e2nd dori\u021bi s\u0103 accelera\u021bi stabilirea conexiunii \u00een viitor.<\/p>\n<p>Browserul ar trebui s\u0103 stabileasc\u0103 o conexiune dac\u0103 extrage resurse de la un nou domeniu extern. De exemplu, dac\u0103 \u00eencarc\u0103 fonturi Google, React din CDN sau solicit\u0103 un r\u0103spuns JSON de la serverul API.<\/p>\n<p>Stabilirea unei noi conexiuni dureaz\u0103 de obicei c\u00e2teva sute de milisecunde. Aceasta se face o singur\u0103 dat\u0103, dar, cu toate acestea, dureaz\u0103 timp. Dac\u0103 a\u021bi stabilit conexiunea \u00een avans, ve\u021bi economisi timp \u0219i ve\u021bi \u00eenc\u0103rca mai repede resursele de la acest domeniu.<\/p>\n<h3>Sintaxa<\/h3>\n<p><\/p>\n<pre><code class=\"xml\">&lt;link rel= \"preconnect\" href=\"https:\/\/api.my-app.com\" \/&gt;<\/code><\/pre>\n<p>\n<code>href<\/code> arat\u0103 spre numele domeniului pentru care trebuie s\u0103 determina\u021bi adresa IP. Poate fi specificat cu prefix (<code>https:\/\/domain.com<\/code>) sau f\u0103r\u0103 acesta (<code>\/\/domain.com<\/code>).<\/p>\n<h3>C\u00e2nd s\u0103 folose\u0219ti<\/h3>\n<p>\n<b>Utiliza\u021bi pentru domeniile care vor fi necesare \u00een cur\u00e2nd<\/b> pentru a \u00eenc\u0103rca de acolo un stil, script sau imagine important\u0103, dar \u00eenc\u0103 nu \u0219ti\u021bi URL-ul resursei. De exemplu:<\/p>\n<ul>\n<li>Aplica\u021bia dvs. este g\u0103zduit\u0103 pe <code>my-app.com<\/code> \u0219i face cereri AJAX c\u0103tre <code>api.my-app.com<\/code>: nu \u0219ti\u021bi dinainte cererile specifice, deoarece acestea sunt f\u0103cute dinamic din JS. Aici utilizarea etichetei pentru conectarea \u00een avans la domeniu este absolut adecvat\u0103.\n<\/li>\n<li>Aplica\u021bia dvs. este g\u0103zduit\u0103 pe <code>my-app.com<\/code> \u0219i utilizeaz\u0103 fonturi Google Fonts. Acestea sunt \u00eenc\u0103rcate \u00een dou\u0103 etape: mai \u00eent\u00e2i, fi\u0219ierul CSS din domeniul <code>fonts.googleapis.com<\/code>, apoi acest fi\u0219ier solicit\u0103 fonturile de la <code>fonts.gstatic.com<\/code>. Nu pute\u021bi \u0219ti care fi\u0219iere specifice de fonturi sunt <code>fonts.gstatic.com<\/code> vei avea nevoie, p\u00e2n\u0103 nu \u00eencarci fi\u0219ierul CSS, a\u0219a c\u0103 din timp putem doar s\u0103 stabilim o conexiune preliminar\u0103.<\/li>\n<\/ul>\n<p>\n<b>Folose\u0219te aceast\u0103 etichet\u0103 pentru a accelera pu\u021bin un script sau un stil de ter\u021b\u0103 parte<\/b> datorit\u0103 stabilirii conexiunii preliminare.<\/p>\n<p><b>Nu abuza<\/b>. Stabilirea \u0219i men\u021binerea conexiunii este o opera\u021biune costisitoare at\u00e2t pentru client, c\u00e2t \u0219i pentru server. Folose\u0219te aceast\u0103 etichet\u0103 maximum pentru 4-6 domenii.<\/p>\n<h3>Detalii<\/h3>\n<p>\n<b>O etichet\u0103 op\u021bional\u0103<\/b>. Browser-ul nu este obligat s\u0103 urmeze aceast\u0103 instruc\u021biune \u0219i poate ignora, de exemplu, dac\u0103 sunt deja stabilite multe conexiuni sau \u00een alt caz.<\/p>\n<p><b>Ce include procesul de conectare<\/b>. Pentru a se conecta la fiecare site, browser-ul trebuie s\u0103 execute urm\u0103toarele ac\u021biuni:<\/p>\n<ul>\n<li><i>Rezolvarea DNS<\/i>. G\u0103se\u0219te adresa IP a serverului (<code>216.58.215.78<\/code>) pentru numele de domeniu specificat (<code>google.com<\/code>).<\/li>\n<li><i>Handshake TCP<\/i>. Schimb de pachete (client \u2192 server \u2192 client) pentru a ini\u021bia o conexiune TCP cu serverul.<\/li>\n<li><i>Handshake TLS (numai pentru site-uri HTTPS)<\/i>. Dou\u0103 runde de schimb de pachete (client \u2192 server \u2192 client \u2192 server \u2192 client) pentru a ini\u021bia o sesiune TLS sigur\u0103.<\/li>\n<\/ul>\n<p>\nNot\u0103: HTTP\/3 va \u00eembun\u0103t\u0103\u021bi \u0219i accelera mecanismul de handshake, dar este \u00eenc\u0103 departe.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"dns-prefetch\"><\/a><\/noindex><\/p>\n<h1>dns-prefetch<\/h1>\n<p>\n<code>&lt;link rel= \"dns-prefetch\"&gt;<\/code> solicit\u0103 browser-ului s\u0103 rezolve anticipat DNS pentru domeniu, dac\u0103 te vei conecta cur\u00e2nd la el \u0219i vrei s\u0103 accelerezi conexiunea ini\u021bial\u0103.<\/p>\n<p>Browser-ul trebuie s\u0103 determine adresa IP a domeniului dac\u0103 va extrage resurse de la un nou domeniu ter\u021b. De exemplu, s\u0103 \u00eencarce fonturi Google Fonts, React de la CDN sau s\u0103 solicite un r\u0103spuns JSON de la serverul API.<\/p>\n<p>Pentru fiecare nou domeniu, rezolvarea \u00eenregistr\u0103rii DNS dureaz\u0103 de obicei \u00eentre 20-120 ms. Aceasta afecteaz\u0103 doar \u00eenc\u0103rcarea primei resurse de pe acest domeniu, dar reprezint\u0103 totu\u0219i o \u00eent\u00e2rziere. Dac\u0103 rezolv\u0103m DNS anticipat, economisim timp \u0219i vom \u00eenc\u0103rca resursa mai repede.<\/p>\n<h3>Sintaxa<\/h3>\n<p><\/p>\n<pre><code class=\"xml\">&lt;link rel= \"dns-prefetch\" href=\"https:\/\/api.my-app.com\" \/&gt;<\/code><\/pre>\n<p>\n<code>href<\/code> indic\u0103 numele domeniului pentru care trebuie s\u0103 se stabileasc\u0103 adresa IP. Poate fi specificat cu prefix (<code>https:\/\/domain.com<\/code>) sau f\u0103r\u0103 acesta (<code>\/\/domain.com<\/code>).<\/p>\n<h3>C\u00e2nd s\u0103 folose\u0219ti<\/h3>\n<p>\n<b>Utiliza\u021bi pentru domeniile care vor fi necesare \u00een cur\u00e2nd<\/b> pentru a \u00eenc\u0103rca de acolo resurse de care browser-ul nu \u0219tie din timp. De exemplu:<\/p>\n<ul>\n<li>Aplica\u021bia dvs. este g\u0103zduit\u0103 pe <code>my-app.com<\/code> \u0219i face cereri AJAX c\u0103tre <code>api.my-app.com<\/code>: nu \u0219ti\u021bi dinainte cererile specifice, deoarece acestea sunt f\u0103cute dinamic din JS. Aici utilizarea etichetei pentru conectarea \u00een avans la domeniu este absolut adecvat\u0103.\n<\/li>\n<li>Aplica\u021bia dvs. este g\u0103zduit\u0103 pe <code>my-app.com<\/code>, \u0219i folose\u0219te fonturi Google Fonts. Acestea sunt \u00eenc\u0103rcate \u00een dou\u0103 etape: mai \u00eent\u00e2i se \u00eencarc\u0103 fi\u0219ierul CSS de pe domeniu <code>fonts.googleapis.com<\/code>, apoi acest fi\u0219ier solicit\u0103 fonturile de la <code>fonts.gstatic.com<\/code>. Nu pute\u021bi \u0219ti care fi\u0219iere specifice de fonturi sunt <code>fonts.gstatic.com<\/code> vei avea nevoie, p\u00e2n\u0103 nu \u00eencarci fi\u0219ierul CSS, a\u0219a c\u0103 din timp putem doar s\u0103 stabilim o conexiune preliminar\u0103.<\/li>\n<\/ul>\n<p>\n<b>Folose\u0219te aceast\u0103 etichet\u0103 pentru a accelera pu\u021bin un script sau un stil de ter\u021b\u0103 parte<\/b> datorit\u0103 stabilirii conexiunii preliminare.<\/p>\n<blockquote><p>Observa\u021bi caracteristicile similare pe <code>&lt;link rel= \"dns-prefetch\"\/&gt;<\/code> \u0219i <code>&lt;link rel= \"preconnect\"&gt;<\/code>. Utilizarea lor \u00eempreun\u0103 pentru un singur domeniu de obicei nu are sens: <code>&lt;link rel= \"preconnect\"&gt;<\/code> deja include <code>&lt;link rel= \"dns-prefetch\"\/&gt;<\/code> \u0219i multe altele. Acesta poate fi justificat \u00een dou\u0103 cazuri:<\/p>\n<ul>\n<li><i>Dori\u021bi s\u0103 sus\u021bine\u021bi browserele mai vechi<\/i>. <code>&lt;link rel= \"dns-prefetch\" \/&gt;<\/code> sus\u021binut\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/caniuse.com\/#feat=link-rel-dns-prefetch\">\u00eencep\u00e2nd cu IE10 \u0219i Safari 5<\/a><\/noindex>. <code>&lt;link rel= \"preconnect\"&gt;<\/code> a fost sus\u021binut o anumit\u0103 perioad\u0103 \u00een Chrome \u0219i Firefox, dar a fost ad\u0103ugat \u00een Safari doar \u00een 11.1 \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/caniuse.com\/#feat=link-rel-preconnect\">\u00eenc\u0103 nu este sus\u021binut \u00een IE\/Edge<\/a><\/noindex>. Dac\u0103 trebuie s\u0103 sus\u021bine\u021bi aceste browsere, utiliza\u021bi <code>&lt;link rel= \"dns-prefetch\" \/&gt;<\/code> ca alternativ\u0103 pentru <code>&lt;link rel= \"preconnect\"&gt;<\/code>.<\/li>\n<li><i>Dori\u021bi s\u0103 accelera\u021bi conexiunea la mai mult de 4-6 domenii<\/i>. Eticheta <code>&lt;link rel= \"preconnect\"&gt;<\/code> nu este recomandat s\u0103 fie utilizat\u0103 cu mai mult de 4-6 domenii, deoarece stabilirea \u0219i men\u021binerea unei conexiuni este o opera\u021biune costisitoare. <code>&lt;link rel= \"dns-prefetch\" \/&gt;<\/code> consum\u0103 mai pu\u021bine resurse, a\u0219a c\u0103 folosi\u021bi-l dac\u0103 este necesar.<\/li>\n<\/ul>\n<\/blockquote>\n<p><\/p>\n<h3>Detalii<\/h3>\n<p>\n<b>O etichet\u0103 op\u021bional\u0103<\/b>. Browserul nu este obligat s\u0103 urmeze aceast\u0103 instruc\u021biune, a\u0219a c\u0103 poate s\u0103 nu efectueze rezolvarea DNS, de exemplu, dac\u0103 exist\u0103 multe astfel de etichete pe pagin\u0103 sau \u00een alt caz.<\/p>\n<p><b>Ce este DNS<\/b>. Fiecare server de pe internet are o adres\u0103 IP unic\u0103, care arat\u0103 ca <code>216.58.215.78<\/code>. \u00cen bara de adrese a browserului se introduce de obicei numele site-ului (de exemplu, <code>google.com<\/code>), iar serverele DNS (Domain Name System) \u00eel coreleaz\u0103 cu adresa IP a serverului (<code>216.58.215.78<\/code>).<\/p>\n<p>Pentru a determina adresa IP, browserul trebuie s\u0103 fac\u0103 o solicitare c\u0103tre un server DNS. Aceasta dureaz\u0103 20-120 ms c\u00e2nd se conecteaz\u0103 la un domeniu str\u0103in nou.<\/p>\n<p><b>DNS este cache-uit, de\u0219i nu foarte fiabil<\/b>. Unele sistemele de operare \u0219i browserele cache-uiesc solicit\u0103rile DNS: acest lucru economise\u0219te timp la solicit\u0103rile repetate, dar nu trebuie s\u0103 te bazezi pe cache. \u00cen Linux, de obicei nu func\u021bioneaz\u0103 deloc. Chrome are un cache DNS, dar acesta exist\u0103 doar timp de un minut. Windows cache-uie\u0219te r\u0103spunsurile DNS timp de cinci zile.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"prerender\"><\/a><\/noindex><\/p>\n<h1>prerender<\/h1>\n<p>\n<code>&lt;link rel= \"prerender\"&gt;<\/code> cere browserului s\u0103 \u00eencarce URL-ul \u0219i s\u0103-l afi\u0219eze pe un tab invizibil. C\u00e2nd utilizatorul face clic pe link, pagina ar trebui s\u0103 se afi\u0219eze imediat. Acest lucru este util dac\u0103 e\u0219ti sigur c\u0103 utilizatorul va vizita o anumit\u0103 pagin\u0103 \u0219i dore\u0219ti s\u0103 accelerezi afi\u0219area acesteia.<\/p>\n<p>\u00cen ciuda eficien\u021bei excep\u021bionale a acestei etichete (sau din cauza ei), \u00een 2019 <code>&lt;link rel= \"prerender\"&gt;<\/code> este slab sus\u021binut de browserele principale. Mai multe detalii la <noindex><a rel=\"nofollow\" href=\"#1\">mai jos<\/a><\/noindex>.<\/p>\n<h3>Sintaxa<\/h3>\n<p><\/p>\n<pre><code class=\"xml\">&lt;link rel=\"prerender\" href=\"https:\/\/my-app.com\/pricing\" \/&gt;<\/code><\/pre>\n<p>\n<code>href<\/code> indic\u0103 URL-ul pentru care dore\u0219ti s\u0103 rulezi randarea \u00een fundal.<\/p>\n<h3>C\u00e2nd s\u0103 folose\u0219ti<\/h3>\n<p>\n<b>C\u00e2nd e\u0219ti cu adev\u0103rat sigur c\u0103 utilizatorul va merge pe o anumit\u0103 pagin\u0103<\/b>. Dac\u0103 ave\u021bi un \u201etunel\u201d prin care 70% din vizitatorii paginii A trec pe pagina B, atunci <code>&lt;link rel= \"prerender\"&gt;<\/code> pe pagina A va ajuta s\u0103 afi\u015fa\u021bi foarte rapid pagina B.<\/p>\n<p><b>Nu abuza<\/b>. Pre-randarea este extrem de costisitoare din punct de vedere al traficului \u0219i memoriei. Nu folosi\u021bi <code>&lt;link rel= \"prerender\"&gt;<\/code> mai mult de o pagin\u0103.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"1\"><\/a><\/noindex><\/p>\n<h3>Detalii<\/h3>\n<p>\n<b>O etichet\u0103 op\u021bional\u0103<\/b>. Browserul nu este obligat s\u0103 urmeze aceast\u0103 instruc\u021biune \u0219i o poate ignora, de exemplu, pe o conexiune lent\u0103 sau cu memorie insuficient\u0103.<\/p>\n<p>Pentru a economisi memorie <b>Chrome nu efectueaz\u0103 o randare complet\u0103<\/b>, iar <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.google.com\/web\/updates\/2018\/07\/nostate-prefetch\">ci doar o pre\u00eenc\u0103rcare NoState<\/a><\/noindex>. Aceasta \u00eenseamn\u0103 c\u0103 Chrome \u00eencarc\u0103 pagina \u0219i toate resursele sale, dar nu face randarea \u0219i nu execut\u0103 JavaScript.<\/p>\n<p>Firefox \u0219i Safari nu suport\u0103 deloc acest etichet\u0103. Nu \u00eencalc\u0103 specifica\u021bia, deoarece browserele nu sunt obligate s\u0103 execute aceast\u0103 instruc\u021biune; dar este \u00een continuare trist. <noindex><a rel=\"nofollow\" href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=730101\">Un bug de implementare<\/a><\/noindex> \u00een Firefox a fost raportat timp de \u0219apte ani. Exist\u0103 informa\u021bii c\u0103 Safari <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/bluesmoon\/status\/1108412360828563456\">de asemenea, nu suport\u0103 acest etichet\u0103<\/a><\/noindex>.<\/p>\n<h1>Rezumat<\/h1>\n<p>\nUtiliza\u021bi:<\/p>\n<ul>\n<li><code>&lt;link rel=\"preload\"&gt;<\/code>\u00a0\u2014 c\u00e2nd ave\u021bi nevoie de resurs\u0103 \u00een c\u00e2teva secunde\n<\/li>\n<li><code>&lt;link rel= \"prefetch\"&gt;<\/code>\u00a0\u2014 c\u00e2nd ave\u021bi nevoie de resurs\u0103 pe pagina urm\u0103toare\n<\/li>\n<li><code>&lt;link rel= \"preconnect\"&gt;<\/code>\u00a0\u2014 c\u00e2nd \u0219ti\u021bi c\u0103 ve\u021bi avea nevoie de resurs\u0103 \u00een cur\u00e2nd, dar nu \u0219ti\u021bi \u00eenc\u0103 URL-ul complet\n<\/li>\n<li><code>&lt;link rel= \"dns-prefetch\"&gt;<\/code>\u00a0\u2014 similar, c\u00e2nd \u0219ti\u021bi c\u0103 ve\u021bi avea nevoie de resurs\u0103 \u00een cur\u00e2nd, dar nu \u0219ti\u021bi \u00eenc\u0103 URL-ul complet (pentru browserele mai vechi)\n<\/li>\n<li><code>&lt;link rel= \"prerender\"&gt;<\/code>\u00a0\u2014 c\u00e2nd sunte\u021bi sigur c\u0103 utilizatorii vor naviga pe o anumit\u0103 pagin\u0103 \u0219i dori\u021bi s\u0103 accelera\u021bi afi\u0219area acesteia<\/li>\n<\/ul>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/445264\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0432\u0435\u0431-\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445\u00a0\u2014 \u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u043e\u0437\u0436\u0435. \u041f\u0440\u0435\u0444\u0442\u0435\u0447\u0438\u043d\u0433 CSS, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u043f\u043e\u043b\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u043d\u0433 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438. \u0414\u0435\u043b\u0430\u0435\u043c \u0432\u0441\u0451 \u0437\u0430\u0440\u0430\u043d\u0435\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442! \u0417\u0432\u0443\u0447\u0438\u0442 \u043a\u0440\u0443\u0442\u043e. \u0415\u0449\u0451 \u043a\u0440\u0443\u0447\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e. \u041f\u044f\u0442\u044c \u0442\u0435\u0433\u043e\u0432 &lt;link rel&gt; \u0434\u0430\u044e\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f: &lt;link rel=&#187;prefetch&#187; href=&#187;\/style.css&#187; as=&#187;style&#187; \/&gt; [&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":[],"tags":[],"class_list":["post-30281","post","type-post","status-publish","format-standard","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0432\u0435\u0431-\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445 \u2014 \u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u043e\u0437\u0436\u0435.\" \/>\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\/preload-prefetch-i-drugie-tegi\" \/>\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\udd47Preload, prefetch \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u0435\u0433\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0432\u0435\u0431-\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445 \u2014 \u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u043e\u0437\u0436\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/preload-prefetch-i-drugie-tegi\" \/>\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-10-31T18:34:39+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:34:39+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\udd47Preload, prefetch \u0219i alte etichete | ProHoster","description":"Exist\u0103 multe modalit\u0103\u021bi de a \u00eembun\u0103t\u0103\u021bi performan\u021ba web. Una dintre ele este pre\u00eenc\u0103rcarea con\u021binutului care va fi necesar mai t\u00e2rziu.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/preload-prefetch-i-drugie-tegi","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\udd47Preload, prefetch \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u0435\u0433\u0438 | ProHoster","og:description":"\u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0432\u0435\u0431-\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445 \u2014 \u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u043e\u0437\u0436\u0435.","og:url":"https:\/\/prohoster.info\/ro\/blog\/preload-prefetch-i-drugie-tegi","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-10-31T18:34:39+00:00","article:modified_time":"2019-10-31T18:34:39+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30281","title":null,"description":null,"keywords":null,"keyphrases":null,"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":"Article","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-21 00:29:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:37:28","updated":"2026-01-21 00:29:19","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\/30281","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=30281"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/30281\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=30281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=30281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=30281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}