Sådan paralleliseres downloads på tværs af værtsnavne

Nogle testværktøjer til hastighed på båndbredde kan anbefale websteder, der parallellerer downloads på tværs værtsnavne til effektivt at levere webindhold til webbrowsere. Denne anbefaling forekommer normalt på websteder, der bruger HTTP / 1.1-protokollen, og sker, når webbrowsere begrænser antallet af samtidige forbindelser til et domæne.

Hjemmesider, der har mange HTTP anmodninger om statisk indhold (såsom billeder, CSS filer og JavaScript) støder på en Parallelize Downloads Across Hostnames advarsel. For at omgå denne begrænsning skal du indstille domæneskærmning eller bruge et indholdsleveringsnetværk (CDN).

HTTP / 2-protokollen er blevet den vigtigste standard, hvilket gør behovet for paralleliserede downloads forældet. De fleste webhosts bruger nu HTTP / 2 som standard og stiller en gratis CDN af en slags til rådighed. Da HTTP / 2 er Googles præference nu, skal du overveje at opdatere dit websted og hosting til HTTPS.

Hvorfor parallelisere downloads på tværs af værtsnavne?

Webbrowsere kan kun åbne et begrænset antal samtidige forbindelser pr. Værtsnavn for websteder, der bruger HTTP / 1.1-protokollen. Denne grænse kan være så høj som seks forbindelser.

instagram viewer

Når der skal downloades flere ressourcer, skal de ekstra ressourcer vente i en efterslagtekø, indtil der er en tilgængelig forbindelse. Ressourcerne i køen er blokeret, og en reduktion af denne spærringstid resulterer i hurtigere sideindlæsningstider.

For eksempel, hvis en webside har 12 billeder, og antallet af forbindelser, der er tilladt af webbrowseren, er seks, skal seks billeder vente i efterslæbet. Billederne i efterslæbet forbliver der, indtil de første seks billeder er downloadet.

Hvis et billede såsom et ikon eller logo bruges flere gange, skal du bruge en CSS Sprite til disse gentagne billeder for at reducere ressourceanmodninger.

Hvad er Parallelize Downloads på tværs af værtsnavne Advarsel?

Paralleliseringen af ​​downloads på tværs af værtsnavne er en regel, der bruges i nogle webstedspræstationsbrikker. Advarslen indikerer, at den webbrowser ikke kunne åbne antallet af forbindelser, der er nødvendige for at downloade alle webstedsressourcerne samtidigt.

For websteder, der bruger HTTP / 1.1-protokollen, er måden at omgå dette behov for mere åbne forbindelser til minimere HTTP-anmodninger, opsæt et CDN eller implementer domæne sharding.

For websteder, der bruger HTTP / 2-protokollen, kan flere ressourcer indlæses parallelt over en enkelt forbindelse; dette kaldes multiplexing. Multiplexing gør domæneskæring unødvendig med HTTP / 2. Omkring 77 procent af webbrowsere understøtter HTTP / 2 og bør ikke støde på noget problem med parallelisering af downloads.

Hvis din webhostingudbyder understøtter HTTP / 2, er det sikkert at ignorere paralleliseringsdownloads på tværs af værtsnavne. Med HTTP / 2 kan flere ressourcer downloades parallelt på en forbindelse.

Hvad er domæneskærmning?

Domain sharding er en ydeevneoptimeringsmetode til HTTP / 1.1-forbindelser og bruges på websteder med et stort antal HTTP-anmodninger. Ved domæneuddeling fordeles aktiver til webindhold på flere underdomæner. Når aktiver distribueres på denne måde, øges antallet af samtidige anmodninger, der kan behandles.

I domæneskærmning uploades indhold på cookie-fri underdomæner. Brugere interagerer ikke med statisk indhold, såsom billeder, JavaScript og CSS-filer, så dette indhold behøver ikke vedhæftes cookies.

Når underdomæner ikke serverer cookies, formindskes størrelsen af ​​anmodninger, der er foretaget for en side og anmodningens latenstid, og websider indlæses hurtigere. Eksempler på indhold, der nyder godt af domæneskærmning, inkluderer sider med indhold, der sjældent cachelagres, såsom en side med miniaturer eller et billedarkiv.

I Drupal tilføjer moduler CSS- og JavaScript-filer, der kan nedsætte ydeevnen. Gå til Site Config > Ydeevne og optimer CSS og JavaScript.

Følg disse tip for at drage fordel af fordelene ved domæneruddeling på HTTP / 1.1-forbindelser:

  • Server ressourcer fra de samme underdomæner for effektivt at cache filer.
  • Fordel ressourcer jævnt mellem underdomæner.
  • Køb SSL-certifikater til underdomænerne.

På HTTP / 2-forbindelser reducerer domæneskærmning ydeevnen, fordi der er yderligere DNS-opslag. Disse DNS-opslag øger opløsningstiden og cache ikke filer. Domain sharding tilføjer også tid til hver nye forbindelse. Dette er andre ulemper ved domæneruddeling på HTTP / 2-forbindelser:

  • Distribution af ressourcer, der indlæses fra CSS, er vanskelige at distribuere mellem splittede værter.
  • Højere belastning på serveren fra det øgede antal samtidige forbindelser.
  • Flytning af statisk indhold til et underdomæne kan bryde kode.
  • Webbrowseren tillader muligvis ikke adgang til et andet værtsnavn.
  • Routere er muligvis ikke i stand til at klassificere et stort antal sharded-anmodninger eller kan se anmodningerne som et denial of service-angreb.

Sådan paralleliseres downloads på tværs af værtsnavne

Når du modtager advarslen om parallelisering af downloads på tværs af værtsnavne, skal du øge paralleliseringen af ​​download ved at distribuere anmodninger blandt flere værtsnavne. For at distribuere anmodninger skal du oprette underdomæner for de forskellige typer webaktiver, der bruges på webstedet, og derefter angive roddomænet som det eneste domæne, der bruger cookies. Underdomæner bruger ikke cookies.

Disse underdomæner tilføjer nye kilder til forbindelser, som browseren kan oprette, og gør det muligt for flere ressourcer at downloade på én gang. Når ressourcer opdeles mellem underdomæner, bruger webbrowseren mindre tid på at blokere webindhold, og websider indlæses hurtigere.

For websteder, der bruger HTTP / 2 og HTTP / 1.1, er den nemmeste måde at parallelisere downloads på tværs af værtsnavne ved at bruge flere underdomæner gennem et CDN. For websteder, der bruger HTTP / 1.1 og WordPress, skal du oprette underdomæner og redigere WordPress-funktionerne. Php-filen.

Opsæt underdomæner

For at distribuere ressourcer på tværs af underdomæner skal du oprette mindst et og op til fire underdomæner; et eller to underdomæner anbefales. Den mest almindelige måde at oprette underdomæner på er at bruge cPanel, som tilbydes af de fleste webhostingtjenester.

Eksempler på underdomæner er:

  • media1.mydomain.com
  • media2.mydomain.com
  • media3.mydomain.com
  • media4.mydomain.com

Underdomæner og værtsnavne skal også have samme struktur og sti. For eksempel, hvis billedstien på værten er www.mydomain.com/wp-content/uploads/, skal billedstien på underdomænerne matche f.eks. Media1.mydomain.com/wp-content/uploads/.

Opsæt et CDN til at parallellisere downloads

Når CDN er konfigureret, og underdomænerne er oprettet, skal du pege hvert underdomæne på den mappe, der indeholder det statiske indhold. På denne måde indlæses indholdet over underdomænet i stedet for hoveddomænet.

For at pege på et underdomæne skal du bruge en DNS Zone Editor i cPanel til at oprette en ny CNAME-post for hvert underdomæne. I feltet Navn på posten skal du indtaste underdomænet, f.eks. Media.mydomain.com. I CNAME-feltet skal du indtaste hoveddomænet, for eksempel www.mydomain.com.

Når CNAME-posterne er oprettet og udbredt af din webhost, skal du tilføje CNAME-posterne til CDN-zoneindstillingerne.

Rediger konfigurationsfilen til webstedet i WordPress for at parallellisere downloads

Når du har konfigureret underdomænerne, skal du tilføje denne kode til funktionerne.php-filen af ​​WordPress-temaet, der bruges til dit websted. Udskift media1.mydomain.com og media2.mydomain.com med dine faktiske underdomæner.

funktion parallelize_hostnames ($ url, $ id) {
$ hostname = par_get_hostname ($ url); // kald supplerende funktion
$ url = str_replace (parse_url (get_bloginfo ('url'), PHP_URL_HOST), $ hostname, $ url);
returner $ url;
}
funktion par_get_hostname ($ name) {
$ underdomæner = array ('media1.mydomain.com', 'media2.mydomain.com'); // tilføj dine underdomæner her, så mange du vil.
$ host = abs (crc32 (basenavn ($ name))% count ($ subdomæner));
$ hostname = $ subdomains [$ host];
returner $ hostname;
}
add_filter ('wp_get_attachment_url', 'parallelize_hostnames', 10, 2);

Hvis du bruger Jetpack med WordPress, skal du aktivere Site Accelerator-tjenesten for at placere dine billeder på et WordPress-administreret CDN.