Czy pobrano nieużywane obrazy CSS?


127

Czy nieużywane obrazy CSS są pobierane przez przeglądarkę lub ignorowane?

Na przykład. w regułach CSS, które nie pasują do żadnych elementów.

.nothingHasThisClass{background:url(hugefile.png);}

A może zależy to od przeglądarki?


20
+1 za interesujące pytanie
— Jitendra Vyas

Odpowiedzi:


89

Byłoby to zależne od przeglądarki, ponieważ decydują się na wdrożenie specyfikacji, jednak w krótkim teście tutaj:

  • Chrome: nie
  • FireFox: nie
  • Safari: nie
  • IE8: nie
  • IE7: nie
  • IE6: nieznany (czy ktoś może przetestować i skomentować?)

1
Zakładam, że testowałeś w systemie Windows? Jeśli chcesz dodać porównania między platformami, mogę zaoferować, że Firefox 3.6.x i Chrome 5.0.307.11 (Ubuntu 9.10) również nie . =)
— David mówi, że przywróć Monikę

Aha widzę. Myślałem, że ładowanie ich przez Firefox, Chrome i Safari byłoby dość kiepskie, ale nie dałbym tego za IE. Czy ten wynik jest taki sam dla IE 6 i 7?
— Alex

@Alex - IE7 Tak, chociaż bardziej złożona strona może to oszukać? IE6 Nie mogę sprawdzić, gdzie jestem ... może ktoś tutaj może zaktualizować moją odpowiedź.
— Nick Craver

49
Czy mogę złożyć protest przeciwko testowaniu czegokolwiek w IE6?
— Dave Markle

2
@Dave: Wszystko powinno być przetestowane w IE6 (niewierny odszedł), jeśli działa tam poprawnie i będzie w każdej cholernej przeglądarce: P
— N 1.1

13

Nie, nie są one pobierane, przynajmniej w przeglądarkach Firefox, IE8 i Chrome.

Prosty sposób na sprawdzenie tego:

<!DOCTYPE html>
<html>
    <head>
       <style type="text/css">
        .nonexistent {
            background: url('index.php?foo');
        }
        </style>
    </head>
    <body>
<?php if(isset($_GET['foo'])) {
    file_put_contents('test.txt', $_SERVER['HTTP_USER_AGENT']);
} ?>
    </body>
</html>

Jeśli test.txtjest wypełniony agentem użytkownika przeglądarki, obraz jest pobierany. Nie miało to miejsca w żadnym z moich testów.


9

Szybki test to udowodnił.

<!DOCTYPE html>
<html>
<head>
<title></title>

<style type="text/css"><!--

.hasnothing{background-image:url(http://25.media.tumblr.com/tumblr_ky7aakqvH01qatluqo1_400.jpg);}
.hassomething{background-image:url(http://27.media.tumblr.com/tumblr_kxytwr7YzH1qajh4xo1_500.png);}

--></style>

</head><body>

<div class="hassomething"></div>

</body></html>

Drugi obraz tumblr_kxytwr7YzH1qajh4xo1_500.pngzostał pobrany, ale drugi nie. Udowodniono to w Chrome (narzędzia programistyczne) i Firefox (Firebug).


8

Firefox i Chrome (Ubuntu 9.10) nie pobierają obrazów klas / identyfikatorów, które nie są stosowane w DOM.

Może to jednak zależeć zarówno od platformy, jak i przeglądarki.


3

Czasami zależy tylko, co dokładnie oznacza „nieużywane”. Różne przeglądarki definiują to inaczej. Na przykład w przeglądarce Firefox style zastosowane do <noscript>tagu są uważane za „nieużywane”, a zatem żadne obrazy nie zostaną pobrane.

Chrome 26 (ewentualnie ich wszystkich, nie jestem pewien), robi zdjęcia do pobrania CSS, jeżeli są one stosowane do <noscript>elementu, nawet gdy JS jest włączony. (Nie jest dla mnie od razu jasne, dlaczego, może to jest błąd?).

To nie pobrać obrazy CSS stosowany do elementów w całym tym <noscript>elementem, choć. (jest to oczywiście oczekiwane zachowanie).

Przykład:

CSS:

noscript { background-image: url('always.png') 0 0 repeat; }
noscript p ( background-image: url('nojsonly.png') 0 0 repeat; }

HTML:

<noscript>The CSS background image of this NOSCRIPT-element will always be downloaded in Chrome.  Will not be downloaded in Firefox</noscript>
<noscript><p>The CSS background image of this P-element won't be downloaded in Chrome or other browsers, unless JS is disabled</p></noscript>

W tym przypadku, jeśli użytkownik ma włączoną obsługę JS, zarówno always.png , jak i otherbg.png są pobierane w przeglądarce Chrome. Jeśli użytkownik nie ma włączonego JS, tylko plik nojsonly.png jest pobierany w przeglądarce Chrome.

Używam tej techniki do pomiaru poziomów ruchu od użytkowników nie obsługujących JS, ponieważ Google Analytics zawodzi nas tutaj. Wolę używać tła obrazu CSS zamiast normalnego <img...>tagu, ponieważ pracuję zgodnie z (nieprzetestowaną) teorią, że boty rzadziej przechwytują obraz CSS niż <img...>obraz, pozostawiając dokładniejsze liczby dla ludzi odwiedzających.


2

Prawie wszystkie przeglądarki ładują się z opóźnieniem. Jeśli obraz nie jest wymagany, nie jest pobierany. Użyj firebug (dodatek w przeglądarce Firefox / Chrome), aby zobaczyć czas ładowania zasobów.


0

Co ciekawe, Chrome (przynajmniej) pobierze plik unused.png w poniższym przykładzie:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <title>test</title>
        <style type="text/css">
            .unused {
                background: url(unused.png) no-repeat;
            }
            .used {
                background: url(used.png);
            }
        </style>
    </head>
    <body>
        <div class="unused used">
            hello world
        </div>
    </body>
</html>

11
To dlatego, że się do niego odwołuje. Więc nie jestem pewien, czy nazwanie tego „nieużywanym” jest naprawdę ważne ..
— NotMe

@eentzel, usuń „nieużywane” z div, powtórz test i podaj nam swój wynik.
— Anse
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.