2012-08-01 8 views
23

Z powodów, które są konieczne, ale trudne do wytłumaczenia, ustawiam zarówno obraz absolutnie pozycjonowany, jak i obraz tła na div.Czy przeglądarka pobierze obraz dwukrotnie, jeśli jest używany zarówno w obrazie src, jak i obrazie tła div?

Chcę się upewnić, że gdy przeglądarka złapie te obrazy (są one bardzo duże), nie będzie ich ponownie pobierać.

Udawajmy, że obraz bg.jpg w poniższym kodzie wynosi 500 KB. Czy poniższy kod powoduje, że przeglądarka pobiera obraz w całości dwukrotnie, co daje łącznie 1000 KB?

<style> 
    header { 
     background: url(img/bg.jpg) center center fixed transparent; 
    } 
</style> 

<header> 
    <img src="img/bg.jpg" width="500" height="500"> 
</header> 

EDIT: Dziękuję wszystkim za doskonałe odpowiedzi. Chciałem tylko dwukrotnie sprawdzić i upewnić się, że nie zmuszałem użytkownika do ponownego pobrania tych bardzo dużych obrazów.

+0

myślę, pobierze jeden raz i umieści go w gotówce. Drugi obraz zostanie odczytany z gotówki. –

+2

@ MiljanPuzović Tylko dla poprawności, masz na myśli "pamięć podręczną" a nie "gotówkę" – binaryfunt

+2

@BrianFunt Dzięki, to było 3 lata temu, mój angielski był okropny :) –

Odpowiedz

27

Przeglądarki są dość inteligentne, jeśli chodzi o buforowanie. Powinno się go prosić tylko raz.

Dodatkowo, gdy prosi serwer o obraz, zwykle wysyła z prośbą o obraz, kilka nagłówków, które przekazują serwerowi .. Hej, chcę tego obrazu, ale mam już taki, który ma te atrybuty że mi powiedziałeś o tym ostatnim razem, kiedy mi to wysłałeś.

Serwer może następnie reagować z 200 co oznacza, że ​​jest inaczej zawartość 304 czyli ten, którego masz to samo, więc nie będę wysyłać go ponownie, użyj jednego co masz ..

Jedną z tych metod używa ETAG header, ale jest ich jeszcze kilka.

Twój serwer musi obsługiwać to, ale większość robi.

Dodatkowo interweb składa się z bandą skrytek, które będą również spojrzeć na ten rodzaj wartości nagłówka i zwrot rzeczy dla was .. Dlatego Wagi wstęga tak dobrze ;-)

3

Nie, przeglądarka zrobi to w pamięci podręcznej. Jednak w zależności od ustawień użytkownika przeglądarka może zażądać obrazu ponownie przy następnym żądaniu strony, na przykład jeśli użytkownik wyczyści pamięć podręczną między odwiedzinami strony.

+0

to jednak zrobi kolejną prośbę 'http' o sprawdzenie poprawności pamięci podręcznej, jeśli się nie mylę. – bPratik

+1

@bPratik - przeglądarka nie sprawdzi pamięci podręcznej przed wysłaniem żądania. – j08691

+0

Zobacz poniższy cytat z http://developer.yahoo.com/performance/rules.html/#js_dupes. Czy ta sama logika nie dotyczy innych treści statycznych? _ "Niepotrzebne żądania HTTP zdarzają się w Internet Explorerze, ale nie w Firefoksie W Internet Explorerze, jeśli zewnętrzny skrypt jest dołączony dwa razy i nie jest buforowany, generuje dwa żądania HTTP podczas ładowania strony. Nawet jeśli skrypt jest buforowany, dodatkowe żądania HTTP występuje, gdy użytkownik ponownie załaduje stronę. "_ – bPratik

2

Nie, zostanie pobrany raz, a następnie umieszczony w pamięci podręcznej przeglądarki. Przy następnym odwołaniu do adresu URL będzie on wyszukiwał obraz z pamięci podręcznej zamiast pobierać go z serwera.

Powiązane problemy