Reguła „wszystko, co wymagane przed rozpoczęciem renderowania strony, powinno pochodzić z tego samego serwera”, ogólnie dotyczy twojegoserwery lub inne mniejsze zasoby - sytuacje, w których wyszukiwanie DNS może zająć zauważalną ułamek sekundy (co może się szybko zsumować, jeśli obiekty są rozrzucone po wielu domenach). Przy powszechnych zasobach publicznych, takich jak pamięć podręczna Google jQuery i inne biblioteki, istnieje duża szansa, że przeglądarka odwiedzającego już wykonała to wyszukiwanie DNS (ponieważ inne witryny odwołują się do treści z tej usługi) i prawdopodobnie ma też plik w pamięci podręcznej, więc nie należy wykonać transfer (lub jeśli zostanie wysłane żądanie, może po prostu otrzymać krótką odpowiedź „304 - niezmodyfikowana”). Nawet jeśli obiekt wymaga pełnego pobrania, sieć dostarczania treści Google będzie szybsza dla większości użytkowników niż operacja na mniejszą skalę.
Jedna pokrewna reguła: do obiektów, które nie są wymagane do poprawnego działania strony (tak, jak ją widzi użytkownik), należy odwoływać się jak najszybciej w głównej odpowiedzi HTTP. Na przykład, takie jak skrypty wymagane dla usług reklamowych / statystycznych (tj. Google Analytics i podobne) - przekaż użytkownikowi swoje treści tak szybko, jak to możliwe, a następnie załaduj elementy tła, które naprawdę Cię interesują. Zablokowałem kilka usług reklam / statystyk (mapując je na 127.0.0.1 w pliku hostów), ponieważ często są one zbyt wolne, a witryny, które odsyłają do nich wcześniej, po prostu dają mi pustą stronę, podczas gdy skrypty są oczekiwane odwoływania się do nich późno, abym mógł przeczytać treść, dla której jestem, podczas gdy inne rzeczy krążą w tle.
Przydatność domeny bez plików cookie do treści statycznych jest kwestią skali. Jeśli wszystko, co masz, to jeden 10-bajtowy identyfikator sesji w plikach cookie i dziesięć tysięcy odwiedzających dziennie żądających ~ 20 obiektów statycznych na wizytę, oszczędzasz tylko ~ 118 MB przepustowości na miesiąc (20 * 20 * 10000 * 31/1024/1024). Z drugiej strony, jeśli Twoja strona przechowuje w plikach cookie pliki o wartości jednego lub dwóch kilobajtów, różnica może być znacznie bardziej znacząca, zwłaszcza jeśli którykolwiek z twoich użytkowników uzyskuje dostęp do witryny za pośrednictwem wolnych połączeń (np. GPRS przez tethering do telefonu komórkowego lub - zatłoczone łącze Wi-Fi w obszarze o wysokich zakłóceniach) lub jeśli otrzymujesz miliony odwiedzin dziennie.
Podsumowując, w przypadku skryptów, które należy załadować, zanim strona będzie mogła renderować, moje preferencje to:
- ajax.googleapis.com lub podobny
- oryginalna nazwa hosta strony wywołującej
- statyczna domena bez plików cookie
W przypadku zasobów, które nie są niezbędne do początkowego renderowania strony, odwołaj się do nich jak najwcześniej i odwróć powyższą listę preferencji (chociaż różnica między oryginalną nazwą hosta a domeną bez plików cookie najprawdopodobniej nie jest znacząca, chyba że działasz na dużą skalę ).
With common public resources ... there is a good chance that your visitor's browser has already done that DNS lookup today
Osobiście nie czułbym się dobrze, polegając na tym w mojej witrynie. Chciałbym, aby było tak szybko, jak to możliwe, w jak największej liczbie sytuacji. Niezależnie od tego, robisz dobre punkty. +1Google zarządza ogromną siecią treści rozproszoną na całym świecie, która przybliża treść bliżej użytkownika niż jakiemukolwiek pojedynczemu serwerowi, na którym prawdopodobnie działasz (myślę, że jest to firma Akami, ale należąca do Google). Google dostarczy twój plik do użytkownika szybciej niż twój lokalny serwer ... chyba że będą w bardzo bliskiej odległości od twojego osobistego serwera.
To pytanie krążyło w Stackoverflow, a powyższa odpowiedź wydaje się zawsze zgodna. Ale z realistycznego punktu widzenia zyski wynikające z hostingu jeden na drugim będą na dłuższą metę dość minimalne. O wiele lepsze korzyści uzyskasz dzięki zmniejszeniu, optymalizacji i zmniejszeniu ogólnej liczby żądań HTTP niż analizowanie, gdzie rzeczy są fizycznie zlokalizowane. W sytuacjach, w których zaczyna to mieć znaczenie (wykonałem zadanie, w którym strona ładowała się ponad 1,5 miliona razy dziennie, więc poprawa o 5 tys. Oznacza 5 gigabajtów oszczędności w przepustowości) zwykle jest zespół decydentów, którzy mają za zadanie zbadanie tych decyzji.
Osobiście hostuję w Google wyłącznie z tego powodu, że dostarczy mi najbardziej aktualną kopię tego, czego szukam.
źródło
Należy pamiętać, że przeglądarki mają ograniczenia dotyczące liczby zasobów, które będą pobierane jednocześnie z tej samej domeny, zwykle od 2 do 6, w zależności od przeglądarki. Użycie innej domeny pozwala przeglądarce pobierać więcej rzeczy jednocześnie z Twojej domeny.
Najlepszym rozwiązaniem jest więc korzystanie z popularnej sieci CDN, takiej jak ajax.googleapis.com, ponieważ w ten sposób nie ma plików cookie. Użytkownik prawdopodobnie już przeprowadził wyszukiwanie DNS i mógł nawet buforować zasób. Sieci CDN są zoptymalizowane pod kątem szybkości i prawdopodobnie mają serwer blisko użytkownika.
Jeśli CDN nie jest opcją, jeśli masz dużo plików cookie lub masz dużo zasobów do pobrania (obrazy itp.), Użyj domeny wolnej od plików cookie (wystarczy zrezygnować z wyszukiwania DNS).
Jeśli masz niewiele zasobów (tylko jeden niestandardowy plik javascript) i kilka plików cookie (tylko niewielki identyfikator sesji) hosta z tej samej domeny.
Dobre zasoby:
http://www.phpied.com/free-falling-waterfalls/
http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/
http://developer.yahoo.com/performance/rules.html
źródło
Chociaż powyższe odpowiedzi szczegółowo opisały większość twoich pytań, przyczynię się do „potrzebnych do uruchomienia strony”. Tłumaczę to na: czy ten skrypt jest niezbędny do korzystania z witryny? Z doświadczenia wynika, że zazwyczaj odpowiedź brzmi „nie”. Jednak przypadki, gdybym:
I wytyczne Yahlow dotyczące wydajności Yahoo w celach informacyjnych.
źródło