Perché i grandi siti ospitano le loro immagini / CSS su domini esterni?


43

Perché siti come Facebook, Twitter e Google ospitano le loro immagini e CSS su domini esterni come:

  • Facebook: static.ak.fbcdn.net
  • Twitter: a0.twimg.com
  • Google: ssl.gstatic.com

Domande):

  • Le prestazioni sono? o sicurezza?

Risposte:


53

@toomanyairmiles è parzialmente corretto: lo scopo di questa tecnica è consentire connessioni parallele dal browser Web al server. I browser Web dovrebbero consentire un minimo di due connessioni simultanee a un singolo host, ma molti nuovi browser possono gestirne fino a 60. Indipendentemente da ciò, le connessioni simultanee simultanee tra browser e server Web rappresentano un collo di bottiglia della velocità maggiore.

Dalla risorsa di Google :

La specifica HTTP 1.1 (sezione 8.1.4) afferma che i browser dovrebbero consentire al massimo due connessioni simultanee per nome host (anche se i browser più recenti ne consentono più di questo: vedere Browserscope per un elenco). Se un documento HTML contiene riferimenti a più risorse (ad esempio CSS, JavaScript, immagini, ecc.) Rispetto al massimo consentito su un host, il browser invia richieste per quel numero di risorse e mette in coda il resto. Non appena alcune delle richieste terminano, il browser emette richieste per il numero successivo di risorse nella coda. Ripete il processo fino a quando non ha scaricato tutte le risorse. In altre parole, se una pagina fa riferimento a più di X risorse esterne da un singolo host, dove X è il numero massimo di connessioni consentite per host, il browser deve scaricarle in sequenza, X alla volta, incorrendo in 1 RTT per ogni X risorse. Il tempo di andata e ritorno totale è N / X, dove N è il numero di risorse da recuperare da un host. Ad esempio, se un browser consente 4 connessioni simultanee per nome host e una pagina fa riferimento a 100 risorse sullo stesso dominio, comporterà 1 RTT per ogni 4 risorse e un tempo di download totale di 25 RTT.

Quindi il modo per aggirare questo è "frammentare" le richieste a domini diversi o host:

Ancora una volta, dalla stessa risorsa di Google:

Bilancia le risorse parallelizzabili tra i nomi host. Le richieste per la maggior parte delle risorse statiche, tra cui immagini, CSS e altri oggetti binari, possono essere parallelizzate. Bilancia le richieste a tutti questi oggetti il ​​più possibile tra i nomi host. Se ciò non è possibile, come regola generale, cerca di garantire che nessun host serva più del 50% in più della media di tutti gli host. Quindi, ad esempio, se hai 40 risorse e 4 host, ogni host dovrebbe servire idealmente 10 risorse; nel peggiore dei casi, nessun host dovrebbe servire più di 15. Se hai 100 risorse e 4 host, ogni host dovrebbe servire 25 risorse; nessuno host dovrebbe servire più di 38.

Ma c'è ancora un pezzo del puzzle. Ogni richiesta normalmente ha le proprie spese generali, normalmente sotto forma di cookie. Elementi statici come immagini, CSS e JavaScript non devono trasmettere dati sui cookie, quindi la loro pubblicazione da domini (sub) senza cookie può comportare viaggi di andata e ritorno più rapidi:

I contenuti statici, come immagini, file JS e CSS, non devono essere accompagnati da cookie, in quanto non vi è alcuna interazione dell'utente con queste risorse. È possibile ridurre la latenza delle richieste offrendo risorse statiche da un dominio che non fornisce cookie. Questa tecnica è particolarmente utile per le pagine che fanno riferimento a grandi volumi di contenuto statico raramente memorizzato nella cache, come miniature delle immagini che cambiano frequentemente o archivi di immagini a cui si accede raramente. Consigliamo questa tecnica per qualsiasi pagina che serve più di 5 risorse statiche. (Per le pagine che servono meno risorse rispetto a questa, non vale il costo di impostare un dominio aggiuntivo.)

Per riservare un dominio senza cookie per la pubblicazione di contenuto statico, registra un nuovo nome di dominio e configura il tuo database DNS con un record CNAME che punti il ​​nuovo dominio al tuo record di dominio A. Configura il tuo server web per servire risorse statiche dal nuovo dominio e non consentire l'impostazione di cookie in nessun punto di questo dominio. Nelle tue pagine web, fai riferimento al nome di dominio negli URL per le risorse statiche.


13

In passato, i browser Web erano in grado di scaricare solo due elementi contemporaneamente (ora 6 o più), quindi il download di risorse da vari domini è più veloce di un singolo dominio. Questo vale per tutto, dalle immagini ai javascript.

Molte aziende usano anche un CDN , uno strumento che garantisce all'utente finale di ottenere i propri dati da un server geograficamente vicino a loro, aumentando anche le prestazioni del sito riducendo il tempo di andata e ritorno per le richieste di risorse.




-1

Ciò è ancora necessario per i cookie indesiderati inviati all'intestazione mentre si utilizza un nome di dominio esterno senza cookie impostati, quindi è molto più veloce caricare i contenuti.

Quindi sì, è ancora necessario per scopi di velocità.


La risposta accettata dice già che i cookie non vengono inviati per un dominio esterno. Questa risposta non dice nulla che le altre risposte non coprono già.
Stephen Ostermiller
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.