Po co przenosić pliki Javascript do innej domeny głównej, którą również posiadasz?

Zauważyłem, że właśnie w ciągu ostatniego roku, wiele dużych stron internetowych wprowadziło taką samą zmianę w sposobie, w jaki ich strony są strukturyzowane. Każdy z nich przeniósł swoje pliki Javascript z hostingu w tej samej domenie co sama strona (lub subdomena), do hostingu w innej nazwie domeny.

To nie jest zwykła paralelizacja

Teraz, jest dobrze znana technika rozprzestrzeniania składników swojej strony w wielu domenach do równoległego ściągam. [[5]}Yahoo poleca go podobnie jak wiele innych. Na przykład www.example.com jest tam, gdzie hostowany jest Twój HTML, następnie umieszczasz obrazy na images.example.com i javascripts na scripts.example.com . otacza to fakt, że większość przeglądarek ogranicza liczbę jednoczesnych połączeń na serwer, aby być dobrymi obywatelami sieci.

Powyższe jest Nie o czym mówię.

To nie jest zwykłe przekierowanie do dostarczania treści sieć (a może jest--patrz dno pytania)

To, o czym mówię, to hosting Javascripts specjalnie na zupełnie innej domenie. Powiem dokładniej. Właśnie w zeszłym roku zauważyłem, że:

Youtube.com przeniósł swoje .Pliki JS do ytimg.com

Cnn.com przeniósł swoje .Pliki JS do cdn.turner.com

Weather.com przeniósł swoje .Pliki JS do j.imwx.com

Teraz wiem o treści sieci dostaw, takie jak Akamai , które specjalizują się w outsourcingu tego dla dużych stron internetowych. (Nazwa "cdn" w specjalnej domenie Turnera wskazuje na znaczenie tego pojęcia).

Ale zwróć uwagę na te przykłady, każda strona ma swoją własną specjalnie zarejestrowaną domenę do tego celu, a nie domenę sieci dostarczania treści lub innego dostawcy infrastruktury. W rzeczywistości, jeśli spróbujesz załadować stronę główną z większości tych domen skryptów, Zwykle przekierowują one z powrotem do główna domena firmy. I jeśli odwrócisz wyszukiwanie adresów IP, One czasami pojawiają się wskazując na serwery firmy CDN, czasami nie.

Dlaczego mnie to obchodzi?

Pracując wcześniej w dwóch różnych firmach ochroniarskich, wpadłem w paranoję od złośliwych skryptów JavaScript.

W związku z tym stosuję praktykę umieszczania na białej liście witryn, na których zezwalam na uruchamianie Javascript (i innych aktywnych treści, takich jak Java). W rezultacie, aby strona jak cnn.com działa poprawnie, muszę ręcznie umieścić cnn.com do listy. To ból z tyłu, ale wolę to niż alternatywę.

Kiedy ludzie używali takich rzeczy jak scripts.cnn.com / align = "left" / A kiedy ludzie używali subdomen z domen firmy CDN, mogłem po prostu zezwolić na główną domenę firmy CDN z symbolem wieloznacznym z przodu i zabić wiele ptaków jednym kamieniem (np. edgesuite.net oraz *.akamai.com).

Teraz odkryłem, że (od 2008 roku) to za mało. Teraz muszę grzebać w kodzie źródłowym strony, którą chcę do białej listy, i dowiedzieć się, co "tajne" domeny (lub domeny), że strona używa do przechowywania ich Javascripts na. W niektórych przypadkach odkryłem, że muszę zezwolić na trzy różne domeny, aby strona działała.

Dlaczego wszystkie te główne strony zaczęły to robić?

EDIT: OK jak zauważył "onebyone" , wydaje się być związane z CDN dostarczanie treści. Pozwolę sobie więc nieco zmodyfikować to pytanie na podstawie jego badań...

Dlaczego weather.com używając j.imwx.com zamiast twc.vo.llnwd.net?

Dlaczego youtube.com używając s.ytimg.com zamiast static.cache.l.google.com?

Za tym musi być uzasadnienie.

Author: Community, 2008-10-02

10 answers

Twoje kolejne pytanie brzmi zasadniczo: zakładając, że popularna strona internetowa używa CDN, dlaczego miałby używać własnego TLD, jak imwx.com zamiast subdomeny (static.weather.com) lub domeny CDN?

Cóż, powodem używania domeny, którą kontrolują w porównaniu z domeną CDN, jest to, że zachowują kontrolę - potencjalnie mogą nawet całkowicie zmienić CDN i tylko zmienić rekord DNS, zamiast aktualizować linki w tysiącach stron / aplikacji.

Więc po co używać bzdur nazwy domen? Cóż, duża rzecz z plikami pomocniczymi jak .js i .css polega na tym, że chcesz, aby były buforowane przez proxy i przeglądarki ludzi w jak największym stopniu. Jeśli osoba uderzy gmail.com i inne .js jest ładowany z pamięci podręcznej przeglądarki, witryna wydaje się dla nich bardziej snappier, a także oszczędza przepustowość na końcu serwera (wszyscy wygrywają). Problem polega na tym, że po wysłaniu nagłówków HTTP do naprawdę agresywnego buforowania (tj. buforowania mnie przez tydzień, rok lub na zawsze), te pliki nie są zawsze niezawodnie ładowane z serwera i nie można wprowadzać zmian/poprawek do nich, ponieważ coś się zepsuje w przeglądarkach ludzi.

Więc to, co firmy muszą zrobić, to wprowadzić te zmiany i faktycznie zmienić adresy URL wszystkich tych plików, aby zmusić przeglądarki ludzi do ich przeładowania. Rowerem przez domeny jak "a.imwx.com", "b.imwx.com" itd. tak to się robi.

Używając nonsensownej nazwy domeny, Programiści Javascript i ich Łącznik Javascript sysadmin / CDN odpowiedniki mogą mieć własną nazwę domeny / DNS, za którą przepychają te zmiany, za które są odpowiedzialni/autonomiczni.

Następnie, jeśli jakiś rodzaj blokowania Ciasteczek lub blokowania skryptów zaczyna się dziać na TLD, po prostu zmieniają się z jednego nonsensownego TLD na kyxmlek.com albo cokolwiek. Nie muszą się martwić o przypadkowe zrobienie czegoś złego, co ma skutki uboczne przeciwdziałania wszystkim *.google.com.

 41
Author: joelhardi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-02 01:59:48

Ograniczyć ruch plików cookie?

Po ustawieniu pliku cookie w określonej domenie, każde żądanie do tej domeny zostanie odesłane do serwera. Każda prośba!

To może się szybko sumować.

 6
Author: TonyOssa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-02 00:37:13

Wiele powodów:

CDN-inna nazwa dns ułatwia przenoszenie zasobów statycznych do sieci dystrybucji treści

Równoległość-obrazy, arkusze stylów i statyczny javascript używają dwóch innych połączeń, które nie będą blokować innych żądań, takich jak wywołania ajax lub dynamiczne obrazy

Ruch plików Cookie - dokładnie poprawny-szczególnie w przypadku witryn, które mają zwyczaj przechowywania znacznie więcej niż prostego identyfikatora sesji w plikach cookie

Kształtowanie obciążenia-nawet bez CDN nadal istnieją dobre powody, aby hostować zasoby statyczne na mniejszej liczbie serwerów internetowych zoptymalizowanych pod kątem bardzo szybkiej odpowiedzi na ogromną liczbę żądań adresów URL plików, podczas gdy reszta witryny jest hostowana na większej liczbie serwerów reagujących na bardziej intensywne żądania dynamiczne procesora


Update-dwa powody, dla których nie używasz nazwy DNS CDN. Nazwa DNS klienta działa jako klucz do właściwego " ula " zasobów, które CDN jest buforowanie. Również ponieważ twój CDN jest usługą towarową, możesz zmienić dostawca zmieniając rekord dns - dzięki czemu można uniknąć zmian strony, rekonfiguracji lub przesunięcia w witrynie.

 4
Author: loudej,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-02 01:47:14

Myślę, że jest coś w teorii CDN:

Na przykład:

$ host j.imwx.com
j.imwx.com              CNAME   twc.vo.llnwd.net
twc.vo.llnwd.net        A       87.248.211.218
twc.vo.llnwd.net        A       87.248.211.219
$ whois llnwd.net
<snip ...>
Registrant:
  Limelight Networks Inc.
  2220 W. 14th Street
  Tempe, Arizona 85281-6945
  United States

Limelight jest CDN.

Tymczasem:

$ host s.ytimg.com
s.ytimg.com             CNAME   static.cache.l.google.com
static.cache.l.google.com       A       74.125.100.97

Zgaduję, że jest to CDN dla treści statycznych uruchamianych wewnętrznie przez Google.

$ host cdn.turner.com
cdn.turner.com A record currently not present
Nie mogę wygrać wszystkich.

Nawiasem mówiąc, jeśli używasz Firefoksa z dodatkiem NoScript, to automatyzuje on proces polowania przez źródło, a GUI-fy proces białej listy. Zasadniczo kliknij ikonę NoScript w stanie Pasek, otrzymasz listę domen z opcjami tymczasowej lub trwałej białej listy, w tym "wszystkie na tej stronie".

 2
Author: Steve Jessop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-02 01:13:14

Wdrożyłem To rozwiązanie około dwa do trzech lat temu u poprzedniego pracodawcy, kiedy strona zaczęła się przeciążać z powodu starszego wdrożenia serwera www. Przenosząc obrazy CSS i układów na serwer Apache, zmniejszyliśmy obciążenie głównego serwera i zwiększyliśmy prędkość bez końca.

Jednak zawsze miałem wrażenie, że funkcje Javascript mogą być dostępne tylko z tej samej domeny, co sama strona. Nowsze strony nie mają tego ograniczenie: jak już wspomniałeś, wiele z nich ma pliki Javascript na oddzielnych sub-domenach lub nawet całkowicie odłączonych domenach.

Czy ktoś może mi powiedzieć, dlaczego jest to teraz możliwe, skoro nie było to kilka lat temu?

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-11 15:56:07

To nie tylko javascript, że można przenieść do różnych domen, ale jak najwięcej zasobów, jak to możliwe przyniesie poprawę wydajności.

Większość przeglądarek ma limit liczby jednoczesnych połączeń, które można wykonać do jednej domeny (myślę, że jest to około 4), więc gdy masz dużo obrazów, js, css, itp Często wstrzymują się w pobieraniu KAŻDEGO pliku.

Możesz użyć czegoś takiego jak YSlow i FireBug, aby zobaczyć, kiedy każdy plik jest pobierany z serwera.

By mając zasoby na oddzielnych domenach zmniejszasz obciążenie swojej głównej i możesz mieć więcej jednoczesnych połączeń i pobierać więcej plików w danym momencie.

Niedawno uruchomiliśmy stronę internetową realestate, która ma wiele obrazów (domów, duh: P), która używa tej zasady dla obrazów, więc jest o wiele szybciej, aby wymienić dane.

Użyliśmy tego również na wielu innych stronach internetowych, które mają wysoki wolumen aktywów.

 0
Author: Aaron Powell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-02 00:38:30

Myślę, że odpowiedziałeś na swoje pytanie.

Uważam, że twój problem jest związany z bezpieczeństwem, a nie dlaczego.

Być może Nowy meta tag jest w porządku, który opisałby poprawne CDN dla danej strony, wtedy wszystko, czego potrzebujemy, to dodatek do przeglądarki, aby je odczytać i zachowywać się odpowiednio.

 0
Author: Diodeus - James MacFarlane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-02 00:55:11

Czy to z powodu blokowania przez filtry spamu i treści? Jeśli używają dziwnych domen, trudniej jest to rozgryźć i / lub skończysz blokując coś, co chcesz.

Nie wiem, tylko taka myśl.
 0
Author: Darryl Hein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-02 01:19:31

Gdybym był wielką firmą, wielomarkową, myślę, że takie podejście miałoby sens, ponieważ chcesz, aby kod javascript był dostępny jako biblioteka. Chciałbym, aby jak najwięcej stron było jak najbardziej spójnych w obsłudze takich rzeczy jak adresy, nazwy państw, kody pocztowe. AJAX prawdopodobnie sprawia, że problem ten jest widoczny.

W obecnym internetowym modelu biznesowym domeny są markami, a nie nazwami sieci. Jeśli otrzymasz kupione lub spin-off marki, skończysz z wieloma zmianami domeny. To jest problemem nawet najbardziej znanych witryn.

Nadal istnieją linki, które prowadzą do przydatnych dokumentów w*. netscape.com oraz *.mcom.com to już dawno minęło.

Wikipedia dla Netscape mówi:

" 12 października 2004 roku popularna strona deweloperska Netscape DevEdge została zamknięta przez AOL. DevEdge był ważnym zasobem dla technologii związanych z Internetem, przechowując ostateczną dokumentację w przeglądarce Netscape, dokumentację związaną z technologie takie jak HTML i JavaScript oraz popularne artykuły napisane przez liderów branży i technologii, takich jak Danny Goodman. Niektóre treści z DevEdge zostały ponownie opublikowane na stronie Mozilli."

Czyli za mniej niż 10 lat:

  • Mosaic Communications Corporation
  • Netscape Communications Corporation
  • AOL
  • AOL Time Warner
  • Time Warner

Jeśli umieścisz kod w domenie, która nie jest Nazwa marki, zachowujesz dużą elastyczność i nie musisz refaktorować wszystkich punktów wejścia,kontroli dostępu i odniesień do kodu, gdy witryny internetowe są zmieniane.

 0
Author: benc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-02 01:27:23

Pracowałem z firmą, która to robi. Są w centrum danych z dość dobrym peeringiem, więc rozumowanie CDN nie jest dla nich tak duże (może pomogłoby, ale nie robią tego z tego powodu). Ich powodem jest to, że uruchamiają równolegle kilka serwerów internetowych, które zbiorczo obsługują ich dynamiczne strony (skrypty PHP), a także serwują obrazy i niektóre javascript z oddzielnej domeny, na której używają szybkiego, lekkiego serwera internetowego, takiego jak lighttpd lub thttpd do serwowania obrazów i statyczny javascript.

PHP wymaga PHP. Statyczny Javascript i obrazy nie. Wiele można pozbawić w pełni funkcjonalnego serwera www, gdy wszystko, co musisz zrobić, to absolutne minimum.

Pewnie, prawdopodobnie mogliby użyć proxy, który przekierowuje żądania do określonego podkatalogu na inny serwer, ale łatwiej jest po prostu obsłużyć całą statyczną zawartość za pomocą innego serwera.

 0
Author: Matt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-02 02:04:38